GDB step into Dynamic linker(ld.so) code

时间秒杀一切 提交于 2019-12-01 07:48:17

问题


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


回答1:


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



回答2:


Download the Glibc source and path the same with gdb before debugging. Check this ubuntu blog



来源:https://stackoverflow.com/questions/20114565/gdb-step-into-dynamic-linkerld-so-code

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!