开启core dump崩溃记录
背景
程序偶发崩溃,而core dump无法通过log记载,需要系统记录core file
方法
开启无限制大小的core文件记录
ulimit -c unlimited
回放
使用gdb对崩溃内存进行复盘bt
查看堆栈,l
查看对应代码
gdb ${path_to_ur_app} core
(gdb) bt
#0 0x0000007fa15064f8 in ?? ()
#1 0x0000007fa1506484 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) l 1
传参
使用core的同时需要传入参数时命令有所改变
gdb --core=./core --args ./app -v -i ~/config.yaml -c 1
注意
某些系统(如 Ubuntu 18.04)默认启用apport无法产生core文件需要手动关闭服务后ulimit
sudo service apport stop
ulimit -c unlimited
# open a new session for test
bash
# trigger a core dump to verify
kill -11 $$
# now core file should be seen in $PWD
ls core