【问题标题】:How to load all symbol-files recursively from given path including subdirectories?如何从给定路径(包括子目录)递归加载所有符号文件?
【发布时间】:2011-02-19 10:58:56
【问题描述】:

您可以使用以下命令将单个符号文件指向 gdb:

symbol-file /usr/lib/debug/symbolfile.so

但是如何告诉 gdb 从给定路径加载所有符号文件,包括子目录?

【问题讨论】:

  • 你在哪个平台上?我对 Linux/ELF 有一个很好的答案,但如果那不是你的平台,我就懒得输入了。
  • 是的,我有一个 debian linux 平台。
  • 伙计,所有这些答案都很糟糕...How to load multiple symbol files in gdb? 同上

标签: linux debugging gdb symbols


【解决方案1】:

在 Linux 系统上,您一开始就不必使用symbol-file GDB 命令。

诀窍是准备二进制文件,使 GDB 可以自动找到符号文件。这非常容易做到。详细说明here

【讨论】:

  • 好吧,假设我自己不编译任何东西。例如在 apt-get install libc-dbg 之后。我应该在调试之前通过将其复制到某处来移动已安装的调试包吗?
  • 执行“apt-get install libc-dbg”应该允许您在 GDB 中调试 libc 任何其他符号文件命令。如果没有,那么您的 .gdbinit(很可能)已损坏、GDB 已损坏或 libc-dbg 已损坏。我建议您编辑您的问题并提供尽可能多的详细信息,包括安装了哪些软件包以及它们包含的内容,以及您的实际 GDB 会话的输出“gdb -nx -ex 'set verbose on' ./a.out "。
【解决方案2】:

使用以下命令: 设置 solib-search-path 路径

【讨论】:

    【解决方案3】:

    解决办法是add-symbol-file。例如,如果符号文件被称为lib.out:

    add-symbol-file lib.out 0
    

    这在应用程序开发人员使用存储在 ROM 中的库的嵌入式系统上特别有用。如果执行在库函数调用中间停止,调试器需要符号文件来重建堆栈。 即使库是在开发人员无权访问的单独系统上生成的,这也有效。

    【讨论】:

      猜你喜欢
      • 2016-01-17
      • 2010-09-11
      • 2013-05-17
      • 2017-04-03
      • 1970-01-01
      • 2019-07-17
      • 2013-11-12
      • 2020-08-19
      • 2020-02-10
      相关资源
      最近更新 更多