2012-01-17 3 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 Использование (или backtrace команду в консоли GDB). Ниже приведен пример использования more info.

Чтобы напечатать несколько верхних уровни стеки вызовов можно использовать bt n

+0

Bt также работает в lldb. –

Смежные вопросы