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

How to get the gdb call stack trace?

我有一个核心转储和一个存储调试信息的文件,我可以在不使用可执行文件的情况下使用 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 -- 只需保留带有完整调试信息的原始可执行文件以进行调试(您仍然可以将较小的剥离文件发送到执行机器).