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