GDB步入动态链接器(ld.so)代码

时间:2013-11-21 07:07:59

标签: c linux linker gdb glibc

我想在我的普通c代码中使用ld.so的代码。 我试图在TUI模式下通过GDB编写流程,您可以在跳过代码时看到源代码和汇编。

为此,我还从ubuntu软件包管理器安装了libc-dbg binutils-source软件包。 GDB可以找到ld.so本身的调试符号,我可以单步执行使用si的指令级别,但由于GDB无法找到{{{ 1}}并显示ld.so

如何让GDB找到NO Source Available的来源,这样我才能看到ld.so来源中的哪一行实际上正在执行。

我正在使用ld.so 64位Ubuntu 12.10

2 个答案:

答案 0 :(得分:3)

如果你有libc的源代码,你可以使用dir命令将源添加到gdb的源路径:Source_Path

编辑:要调试与libc相关的文件(在Ubuntu发行版中),您需要:

  1. 通过安装libc6-dbg数据包获取libc的调试信息。
  2. 通过启用源存储库(通过运行software-sources并检查“启用源代码存储库”)并运行apt-get source libc6
  3. 来获取libc的源代码
  4. 将libc的调试信息添加到LD_LIBRARY_PATH:export LD_LIBRARY_PATH=/usr/lib/debugLD_LIBRARY_PATH=/usr/lib/debug gdb <application>
  5. 将c文件的完整路径添加到gdb的源路径,这是:dir directory_path_libc_source/stdio-common

答案 1 :(得分:0)

在调试之前下载与gdb相同的Glibc源代码和路径。请检查此ubuntu blog