一、基本介绍
在程序崩溃时,通常只能得到一个segfault之类的提示信息。如果想定位崩溃原因,需要更详细的内容,如运行堆栈等。
启用core dump功能后,程序崩溃时,操作系统会生成一个core dump文件,使用gdb可以对它进行分析。
二、查看和启用core dump
在Linux下,执行 ulimit -c 命令,可以查看core dump的当前设置的core dump文件的最大大小,其中0表示关闭coredump,也就是不会生成core dump文件。
执行 ulimit -c时可以再传入一个参数,表示core dump文件的最大大小,特别的如果传递unlimited,如ulimit -c unlimited,表示不限制core dump文件的最大大小。这种方式只对当前shell起作用,退出shell后就会失效。
如果想永久启用,需要修改/etc/security/limits.conf文件,在末尾添加配置:
* soft core unlimited
配置成soft的方式的话,需要退出重登配置才会生效,配置成hard的方式则下一个创建的进程将直接使用该配置,此时直接启动程序即可。
其他配置参数
/proc/sys/kernel/core_pattern 定义了core文件名的生成格式
/proc/sys/kernel/core_uses_pid 如果这个文件的内容被配置成1,那么即使core_pattern中没有设置%p,最后生成的core dump文件名仍会加上进程ID
/proc/sys/kernel/core_pipe_limi