【问题标题】:Add breakpoints and install handlers添加断点并安装处理程序
【发布时间】: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


    【解决方案1】:

    我刚刚找到了一个库(我什至在几年前就使用过它...):mach_override

    我也找到了this debuglib,但没有尝试。

    查看here 以获取__NSAutoreleaseNoPool 的演示:它会自动执行print_backtrace

    【讨论】:

      猜你喜欢
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多