GDB进入动态链接器(ld.so)代码 [英] GDB step into Dynamic linker(ld.so) code

查看:662
本文介绍了GDB进入动态链接器(ld.so)代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的普通 c 代码中使用ld.so代码。
我试图在 TUI 模式下通过GDB进行代码流可以看到代码和程序集。



为此,我还安装了 libc-dbg binutils-source 来自ubuntu软件包管理器的软件包。
GDB可以找到 ld.so 本身的调试符号,我可以在指令级使用 si 但我无法步入源代码级别,因为GDB无法找到 ld.so 的源代码并且显示无可用源代码



如何让GDB找到 ld.so 的来源,以便我还可以看到 ld.so 源中的哪一行实际上正在执行中。



我正在使用 Ubuntu 12.10 64bit with GCC 4.8.2

解决方案

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

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


  1. 通过安装libc6-dbg包获取libc的调试信息。
  2. 通过启用源代码库(通过运行 software-sources 并检查启用源代码存储库)并运行 apt-get源libc6

  3. 将libc的调试信息添加到LD_LIBRARY_PATH中: export LD_LIBRARY_PATH = / usr / lib / / code>或 LD_LIBRARY_PATH = / usr / lib / debug gdb< application>

  4. 添加c文件的完整路径到gdb的源路径,这是: dir directory_path_libc_source / stdio-common


I wanted to step into the code of ld.so whenever it will be used in my normal c code. I am trying to code flow through GDB in the TUI mode where you can see both source code and assembly as you step over the code.

For this I also installed libc-dbg binutils-source package from ubuntu package manager. GDB can find the debug symbols for the ld.so itself and I can step at the instruction level that is using si but I cant step at the source level as GDB is not able to find the source for ld.so and shows NO Source Available.

How can I make GDB find the source for ld.so so that I can also see which line in the ld.so source is actually being executed.

I am using Ubuntu 12.10 64bit with GCC 4.8.2

解决方案

If you've libc's source code available, you can add sources to gdb's source path with dir command: Source_Path

Edit: To debug libc related files (in a Ubuntu distro) you would need to:

  1. Get libc's debug information by installing libc6-dbg packet.
  2. Get libc's source code by enabling source repositories (by running software-sources and and checking "enable source code repositories") and running apt-get source libc6
  3. Add libc's debug information into LD_LIBRARY_PATH: export LD_LIBRARY_PATH=/usr/lib/debug or LD_LIBRARY_PATH=/usr/lib/debug gdb <application>
  4. Add full path to c file to gdb's source path, this is: dir directory_path_libc_source/stdio-common

这篇关于GDB进入动态链接器(ld.so)代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆