【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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