在运行时打印调用堆栈(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下利用backtrace追踪函数调用堆栈以及定位段错误[转]