以glibc源码调试程序的方法
总结写在前,第一种方法最有效。第二种适合调试其他版本。第三种很磨练意志。
方法1
- 安装带调试的libc
sudo apt install libc6-dbg
sudo apt install libc6-dbg:i386
- 下载源码
- 首先修改
/etc/apt/sources.list
,将deb-src
配置开启 - 更新
sudo apt update
- 使用
apt source
下载源码apt source libc6-dev
- 首先修改
- 导入
gdb file -d glibc/malloc/ -d glibc/libio/
directory glibc/libio/
方法2
查看glibc版本
1 | giles@ubuntu:~/Desktop $ ldd /bin/bash |
libc.so.6
链接的文件/lib/x86_64-linux-gnu/libc.so.6
即是编译时默认链接的- 通过执行或者strings 获取具体版本
Ubuntu GLIBC 2.31-0ubuntu9.2
下载glibc的源码
glibc的源码应该是在这里
https://launchpad.net/ubuntu/+source/glibc/
管理的
访问这里https://launchpad.net/ubuntu/+source/glibc
点开小三角 选择下载方式
1 | giles@ubuntu:~/Desktop $ wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/glibc/2.31-0ubuntu9.2/glibc_2.31.orig.tar.xz |
如果上图并没有找到你所需的版本,在>code页,在相应*-devel
branch内找具体版本的commit id
git下来之后,git checkout commit_id
加载源码
gdb file -d glibc/malloc/ -d glibc/libio/
directory glibc/libio/
两种都行,调试对应的模块使用对应的路径。
方法三 (编译)
说实话,我编译过,很耗时,编译后很大,也很容易出错。一定要注意出错的信息,需要改源码或者apt安装些什么。好运。