关于源码及调式 glibc 我以前想的是编译带 symbol 的 libc 但是失败了,太麻烦了,所以我在网上找到了一种更方便的方法
1.首先 去注释 源码源,就是那些 # deb-src 开头的
1 | sudo sed -i "s/# deb-src/deb-src/g" /etc/apt/sources.list |
如果 /etc/apt/sources.list
里面没有的话自己百度找到符合的源添加
2. update
1 | sudo apt update |
3.安装带 debug symbol 的 libc
1 | sudo apt install libc6-dev |
4.获取 libc6-dev 的源码
1 | apt source libc6-dev |
完事后你会发现当前文件夹下面会有一个 glibc-xxx 的文件夹,这就是源码
就比如我们要在 gdb 中 debug 时能查看 malloc 的源码我们可以这样做
我的是 ubuntu16 glibc-2.23
1 | root@82374599b04f:~# cd glibc-2.23 |
gdb操作:
1 | (gdb) b main |
然后运行到 malloc 那一行的时候就一直 si
就能看到有源码了,先进入的是 dl
然后是 malloc.c
5.总结
malloc 只是个演示
debug 别的函数也是一样
1.先找到源文件的位置
2.然后在 gdb 里 directory
3.步入那个函数就OK