添加断点并安装处理程序



我的高级目标是这样的:

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

最新更新