【问题标题】:Using ptrace to generate a stack dump使用 ptrace 生成堆栈转储
【发布时间】:2010-04-27 20:11:27
【问题描述】:

我正在 *nix 上编译 C++,我想生成一个堆栈转储 a) 在程序中的任意点, b) 在任何信号期间,尤其是在 SIGSEGV 期间。

Google 告诉我 ptrace 可能是这项工作的工具,但我找不到任何可理解的遍历堆栈的示例。得到返回地址,是的,但是 NEXT 的返回地址呢?那么在那个时候提取函数的符号名呢?和 DWARF 有什么关系?

非常感谢你能告诉我从这里去哪里。

【问题讨论】:

    标签: c unix stack ptrace dwarf


    【解决方案1】:

    如果您使用的是 glibc,那么 GNU 函数 backtrace()backtrace_symbols() 是最好的方法。无论如何,遍历堆栈将是特定于环境的,因此在每个平台上使用不可移植的本机函数来执行它没有任何缺点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多