运行时打印调用堆栈 (XCode)

3
2个回答

8

要在运行时以编程方式打印回溯,您可以使用此函数:

#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);
    }
}

2

使用bt(或gdb控制台中的backtrace命令)。这里有关于命令用法的更多信息

要打印调用堆栈的顶层数量,可以使用bt n


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接