我看不到使用 gdb 加载的 coredump 的符号

Posted

技术标签:

【中文标题】我看不到使用 gdb 加载的 coredump 的符号【英文标题】:I can not see the symbol from loaded coredump using gdb 【发布时间】:2014-01-08 02:40:06 【问题描述】:

全部~

我无法从使用 gdb 加载的核心转储中看到符号。

我按以下顺序加载了核心转储文件。

$gdb
(gdb) core-file vold.corefile
[New LWP 3833]
[New LWP 3834]
[New LWP 3835]
Core was generated by `/system/bin/vold'.
Program terminated with signal 3, Quit.
#0  0xb6eaffc8 in ?? ()

(gdb) symbol-file ./out/target/product/msm8974/obj/EXECUTABLES/vold_intermediates/LINKED/vold
Reading symbols from /home/p14291/MSM8974_KK/SYS/EF63/MSM8974_KK/out/target/product/msm8974/obj/EXECUTABLES/vold_intermediates/LINKED/vold...done.

(gdb) bt
#0  0xb6eaffc8 in ?? ()
#1  0xb6ebd316 in ?? ()
#2  0xb6ebd316 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

如你所见,我看不到任何符号信息。

如何查看backtrace上的符号信息?

【问题讨论】:

【参考方案1】:

我看不到任何符号信息。

当您将错误的二进制文件加载到 GDB 中时,通常会发生这种情况。你应该

使用规范的方式调用 GDB:

gdb out/target/product/msm8974/obj/EXECUTABLES/vold vold.core

确认您的二进制文件out/target/product/msm8974/obj/EXECUTABLES/vold 与生成核心转储的目标系统上的/system/bin/vold 完全相同(模剥离——如果一个二进制文件是另一个二进制文件的剥离版本,那没关系)。

【讨论】:

以上是关于我看不到使用 gdb 加载的 coredump 的符号的主要内容,如果未能解决你的问题,请参考以下文章

Linux C/C++代码 使用gdb进行coredump调试

gdb调试coredump文件

记录一次使用GDB调试coredump

记录一次使用GDB调试coredump

gdbcore文件进到某行

arm+linux平台使用gdb/coredump 分析系统日志