【发布时间】:2014-02-18 07:56:07
【问题描述】:
我的高级目标是这样的:
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 解决方案,但跨平台当然会很好。
【问题讨论】:
标签: macos breakpoints ptrace