Печать стека вызовов во время выполнения (XCode) - PullRequest
3 голосов
/ 17 января 2012

Возможно ли это?

Я нашел решение для Visual Studio Печать n уровней стека вызовов?

Ответы [ 2 ]

7 голосов
/ 17 января 2012

Чтобы напечатать трассировку во время выполнения программно, вы можете использовать эту функцию:

#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 голосов
/ 17 января 2012

Используйте bt (или backtrace команда в консоли GDB).Вот дополнительная информация об использовании команд.

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

...