我的高级目标是这样的:
void print_backtrace() {
void *callstack[128];
int framesC = backtrace(callstack, sizeof(callstack));
printf("backtrace() returned %d addressesn", framesC);
char** strs = backtrace_symbols(callstack, framesC);
for(int i = 0; i < framesC; ++i) {
if(strs[i])
printf("%sn", strs[i]);
else
break;
}
free(strs);
}
install_breakpoint_handler("__NSAutoreleaseNoPool", print_backtrace);
因此,每次捕获__NSAutoreleaseNoPool
函数断点时,都应调用print_backtrace
。(全部在同一个二进制文件中。我不想抓住单独进程的断点。
我想我可以通过ptrace
以某种方式做到这一点.是否有一些易于使用且轻量级的库?
目前我正在寻找MacOSX解决方案,但跨平台当然会很好。
我刚刚找到了一个库(几年前我什至用过它mach_override......
我也找到了这个调试库,但没有尝试。
有关__NSAutoreleaseNoPool
的演示,请参见此处:它会自动执行print_backtrace
。