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