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

问题描述

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

解决方法

我可以在不使用可执行文件的情况下使用gdb来获取具有函数和行名称的调用堆栈吗?

至少在Linux / x86_64上,答案是否定的:objcopy --only-keep-debug之后保存的信息还不够;您还需要可执行文件。

之所以会发生这种情况(至少部分是因为)debug_file没有.eh_frame部分,这对于在x86_64上展开是必不可少的。

如果您要自行调试核心转储,则没有理由创建debug_file -仅保留原始可执行文件以及完整的调试信息以进行调试(您仍然可以将较小的剥离文件发送到执行机)。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...