随想录(libc.so和ld.so调试)

时间:2022-06-14 02:05:12

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com


    有时候看glibc一头雾水,那么多macro,也不知道哪些代码讲了什么,也不知道哪些编译了,哪些没有编译,所以总想找个机会看看glibc里面做了什么。可是调试glibc稍微有点麻烦,下面时我个人的一些经验,供大家参考。


1、hello_world依赖哪些文件

通常hello_world要想运行起来,除了依赖它自己之外,还需要ld.so和libc.so


2、glibc如何下载编译

可以找一个和你os差不多版本的glibc,直接从https://www.gnu.org/software/libc/下载

./configure 之后直接make就可以了


3、如何调试libc和ld

a,静态编译,再调试,此时就没有ld和libc了

gcc hello_world.c -g -o hello_world -static
gdb ./hello_world


b,利用LD_PRELOAD的方法进行调试,先运行起来,再用gdb attach过去

LD_PRELOAD=/lib/x86_64-linux-gnu/libc-2.19.so ./hello_world

c,直接用ld.so运行执行文件来调试

gdb /lib/x86_64-linux-gnu/ld-2.19.so
set args ./hello
b _start
b dl_main
r