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

时间:2012-01-17 08:04:13

标签: xcode runtime logging callstack

有可能吗?

我找到了Visual Studio Print n levels of callstack?

的解决方案

2 个答案:

答案 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