有可能吗?
我找到了Visual Studio Print n levels of callstack?
的解决方案答案 0 :(得分:7)
要以编程方式在运行时打印回溯,您可以使用此功能:
#import <execinfo.h>
void PrintBacktrace ( void )
{
void *callstack[128];
int frameCount = backtrace(callstack, 128);
char **frameStrings = backtrace_symbols(callstack, frameCount);
if ( frameStrings != NULL ) {
// Start with frame 1 because frame 0 is PrintBacktrace()
for ( int i = 1; i < frameCount; i++ ) {
printf("%s\n", frameStrings[i]);
}
free(frameStrings);
}
}
答案 1 :(得分:2)
在gdb控制台中使用bt
(或backtrace
命令)。这是关于命令用法的more info。
要打印多个顶级调用堆栈,您可以使用bt n