用gdb调试core dump

1. 开启core dump

在/etc/profile最后加上下面这行

ulimit -c unlimited

2. 程序发生段错误生成core dump

$./test

3. 用gdb调试core dump.

可执行程序最好是用-g编译生成的.

$gdb ./test corefile

(gdb) bt
(gdb) bt full
(gdb) info threads
(gdb) thread apply all bt
(gdb) thread apply all bt full

4. 查看backtrace的某一级调用函数

若是, 一共有3级调用, 如下.

1. test1()
2. test2()
3. test3()

想看 函数2, 请敲入

f 2

5. 查看函数中的变量

看某个变量的值, 譬如val

p val

看某个指针, 譬如指针p1, 对应的内存区域里的值,

x/64x p1

6. 重命名core dump文件名

多个进程同时core dump时,为避免相同的core dump文件名被覆盖,可以使core dump出来的文件带着进程ID号。
在/etc/sysctl.conf最后,添加新的一行

kernel.core_uses_pid = 1

执行如下命令

sudo sysctl -p

查看设置效果

cat /proc/sys/kernel/core_uses_pid

你可能感兴趣的:(开发,小工具)