在“此时没有加载共享库”的情况下是否可以获得回溯?

时间:2015-04-22 13:40:09

标签: gdb shared-libraries coredump debug-symbols backtrace

我收到“此时没有加载共享库”,当我提供“info share”命令时,我还在gdb上加载了符号文件和核心。但通常coredump应根据其相应的应用程序加载共享库。我已经指定了solib-search-path,其中GDB在搜索符号时会查找共享库。

在“此时没有加载共享库”的情况下是否可以获得回溯?

gdb>info sharedlibrary
No shared libraries loaded at this time.
gdb> bt
#0  0xb6d1f232 in ?? ()
#1  0xb6d25ddc in ?? ()
#2  0xb6d25ddc in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

非常感谢,提前。

1 个答案:

答案 0 :(得分:1)

  

我得到"此时没有加载共享库"

最常见的原因:二进制不匹配。

让我们将主机定义为运行GDB的计算机,并将目标定位为发生核心转储的计算机。

  • 如果host == target,您可能已经为GDB提供了与崩溃的可执行文件不匹配的主要可执行文件,或者
  • 系统库(特别是libc)已更新,或
  • host!=主机和目标之间的目标和系统库不同。
  

我已指定solib-search-path

加载solib-search-path后,指定core不起作用。这样做:

gdb ./a.out
(gdb) set solib-search-path /path/to/libs
(gdb) core core  # load core *after* setting solib-search-path

使用set verbose on可能有助于准确显示GDB正在尝试加载的库(如果有)。