【问题标题】:Is it possible to get the backtrace in the case where "No shared libraries loaded at this time"?在“此时没有加载共享库”的情况下是否可以获得回溯?
【发布时间】:2015-04-22 13:40:08
【问题描述】:

当我给出“信息共享”命令并且我还在 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?)

非常感谢,提前。

【问题讨论】:

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


    【解决方案1】:

    我收到“此时没有加载共享库”

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

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

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

    我已指定solib-search-path

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

    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 正在尝试加载哪些库(如果有的话)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 2021-12-17
      相关资源
      最近更新 更多