Published on

core dump分析实例

Authors
  • avatar
    Name
    祝你好运
    Twitter

程序运行中间,如果出错了,有可能会有core dump,生成core.12345文件,这个文件有助于定位问题,这里记录下。

看下core dump的定义。 再来看个例子:

设置core file size

默认情况下,core file size是0,也就是说,不会生成core dump文件,所以这里要改一下。

设置core dump文件大小

注意如果你多次用ulimit -c xxx修改core file size,有可能会出现错误:-bash: ulimit: core file size: cannot modify limit: 不允许的操作,这样的话你重启命令行再试一下有可能就好了(参考core文件设置

写一个程序让它崩溃,然后生成core dump文件

生成core dump文件的程序

把上面的代码写到test.cpp中,然后用下面的命令编译:

g++ -g -o test.exe test.cpp

这里的-g参数是说生成的可执行文件里面附带调试信息,如果不加的话看core dump文件的时候看不到程序是在哪一行崩溃的。然后运行,就会生成core dump文件core.pid,这里的pid就是程序执行时候的pid,每次会变。

用gdb去看这个core dump文件。

用gdb查看core dump文件

正常的程序发布的时候是没有调试信息,但是用bt去查看栈调用仍然可以看到,就是看不到行,这仍然能帮忙定位问题。