2012-01-17 30 views

回答

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

使用bt(或在gdb控制檯backtrace命令)。這裏是more info的命令用法。

要打印號碼呼叫棧的高層,你可以使用bt n

+0

BT也能在LLDB。 – 2012-12-20 02:20:49

相關問題