1. core文件生成打开方式:
ulimit -c unlimited
echo "1" > /proc/sys/kernel/core_uses_pid
看下服务器上是否安装了 gdb,没有的话要装一下
以调试模式打开程序 ./sip_gw -t2 -n 1
之后程序会crashed, 程序目录会生成一个core文件
2. core 文件分析
查看core文件 :
gdb transcoder core.64488
... ... ...
[New LWP 65198]
[New LWP 65196]
[New LWP 65193]
warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `./transcoder -t2 -xml wrk/scte27.xml -n 1'.
Program terminated with signal 11, Segmentation fault.
#0 0x00007fa6613a6c36 in liboper (media_type=0, data_type=736, opt=1, ptr=0x7fa67b6bf170, ctx=0x7fa6640c7d60)
at src/subtitle_service.cpp:241
241 int height = s->p_region->fmt.i_height;
(gdb)
这样我们就知道了程序在哪里crash了