代码考古

探究源码

调试 core 文件

运行环境 ubuntu 让系统产生 core 文件,终端中执行:

$ulimit -c unlimited
#echo "core.%e.%p" >/proc/sys/kernel/core_pattern

这样程序崩溃将在当前执行目录生成 core 文件。

(gdb) core-file core.name.id
(gdb) set solib-search-path path/to/libdir

这样就可以看到函数调用信息了。

其中 solib-search-path 用于指定 gdb 查找动态库符号文件的搜索路径。可以指定多个路径,用:分隔。

同时还有另一个类似的选项 solib-absolute-prefix,其用于指定被搜索文件路径的前缀。只可指定一个。比如要查找的库在/path/lib/lib.so.3,但是本地此库放在了 /home/name/path/lib/lib.so.3。那么可以如下设置

(gdb) set solib-absolute-prefix /home/name

这样 gdb 就能找到对应的库了。

Comments

comments powered by Disqus