linux - 如何获取gdb调用堆栈跟踪?

标签 linux debugging gdb coredump

我有一个核心转储文件和一个存储调试信息的文件,我可以在不使用可执行文件的情况下使用gdb来获取具有函数和行名称的调用堆栈吗?

最佳答案

can I use gdb without using an executable file to get a call stack with the name of functions and lines?


至少在Linux/x86_64上,答案是否定的:在objcopy --only-keep-debug之后保存的信息还不够;您还需要可执行文件。
之所以会发生这种情况(至少部分是因为),因为debug_file没有.eh_frame部分,这是展开x86_64所必需的。
如果您自己调试核心转储,则没有理由创建debug_file -仅保留原始可执行文件以及完整的调试信息以进行调试(您仍然可以将较小的剥离文件发送到执行机)。

关于linux - 如何获取gdb调用堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63488458/

相关文章:

gdb - 查找当前在GDB中调试的可执行文件的源代码路径

c++ - 无法在 gdb 中设置断点

linux - 如何每隔 N 秒重复运行 bash 脚本?

Python3 pip3 无法安装requests

c++ - 如何检查 C++ 中的位?

java - 当堆栈跟踪仅显示 Eclipse 中的 native 方法时,如何找到导致错误的代码行

ruby-on-rails - Docker未安装yarn

c - 小端约定,并保存到二进制文件

java - 在没有 eclipse 等的情况下调试 java 产品

c++ - GDB核心转储: Recover argc argv values after crash