源码编译 glibc 调试版
下载 glibc 源码
镜像下载地址:http://mirrors.ustc.edu.cn/gnu/libc/glibc-2.31.tar.gz
编译安装 glibc
1 | mkdir build |
编译测试用例时指定 glibc
通过 -Wl,-rpath
选项,在编译阶段指定要链接的 glibc 库
1 | gcc -g test.c -Wl,-rpath=/home/lhx/glibc/install/lib |
有些情况下会报重定位的错误,这时候需要在编译时指定 ld-linux.so.2
,即完整的命令:
1 | gcc -g test.c -Wl,-rpath=/home/lhx/glibc/install/lib -Wl,-dynamic-linker=/home/lhx/glibc/install/lib/ld-linux.so.2 |
可以看到测试用例 a.out 链接的 glibc 库就是刚才自己编译出来的调试版
1 | lhx@ubuntu:~/test$ ldd a.out |
开始 gdb 调试
使用 gdb 调试刚编译的 a.out,可以在 printf 那行代码,单步 step 进入到 printf 的内部。
1 | 13 printf("i = %d\n", i); |