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

Posted

技术标签:

【中文标题】在运行时打印调用堆栈(XCode)【英文标题】:Print callstack at runtime (XCode) 【发布时间】:2012-01-17 08:04:13 【问题描述】:

有可能吗?

我找到了 Visual Studio Print n levels of callstack?的解决方案

【问题讨论】:

【参考方案1】:

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

#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 命令)。这里是more info 命令用法。

要打印多个顶层调用堆栈,您可以使用bt n

【讨论】:

以上是关于在运行时打印调用堆栈(XCode)的主要内容,如果未能解决你的问题,请参考以下文章

linux应用异常时打印堆栈方法

linux c 用户态调试追踪函数调用堆栈以及定位段错误

Linux下利用backtrace追踪函数调用堆栈以及定位段错误[转]

如何查看xcode调用堆栈

linux下利用backtrace追踪函数调用堆栈以及定位段错误

用于在运行时记录调用堆栈的库 (Windows/Linux)