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

我想进入ld.so的代码,只要将它用在我的普通c代码中。 我正在尝试在TUI模式下通过GDB编码stream程,您可以在遍历代码的同时看到源代码和程序集。

为此,我还从Ubuntu包pipe理器中安装了libc-dbg binutils-source包。 GDB可以findld.so本身的debugging符号,我可以在使用si的指令级进行操作,但是由于GDB无法findld.so的源代码,因此无法在源代码级执行操作,并显示NO Source Available

我怎样才能让GDBfindld.so的源码,以便我也可以看到ld.so源代码中的哪一行正在被执行。

我正在使用Ubuntu 12.10 64位与GCC 4.8.2

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

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

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

在调试之前下载Glibc的源代码和路径与gdb相同。 检查这个Ubuntu的博客