【发布时间】:2015-01-06 14:07:48
【问题描述】:
在应用程序中处理信号时,我可以在调试器中正确看到回溯。但是回溯系统调用没有正确显示堆栈帧。gdb 存储堆栈帧的方式和回溯系统调用如何转储它们有区别吗?
【问题讨论】:
-
我正在加载一个共享对象,该对象覆盖/安装它自己的信号处理程序并从中链接我的信号处理程序。共享对象是专有的,我没有代码访问它。没有回溯()正在加载的共享对象返回的计数为 14,这是正确的。但是当调用共享对象信号处理程序时,它会干净地删除信号处理程序下方的 8 帧。只是想找出打印正确信息的方法。
-
可能专有共享对象是经过优化且没有帧指针的编译。所以你很不幸,因为你对此无能为力(除了避免使用专有软件,只使用免费软件)。
-
请编辑您的问题以改进它。还要解释为什么要迭代堆栈帧......