1、打开core dump文件的开关
vi /etc/abrt/abrt-action-save-package-data.conf
ProcessUnpackaged = yes
2、设置core dump文件大小不限制
ulimit -c unlimited
永久生效办法:
#vi /etc/profile #最后一行加上: ulimit -c unlimited
或使用source命令使之马上生效:
#source /etc/profile
3、设置core dump文件名包含PID:
echo 1 > /proc/sys/kernel/core_uses_pid
4、设置core dump文件的命名格式:
echo "/tmp/corefile/core-%e-%s-%t-%u"> /proc/sys/kernel/core_pattern
%格式的含义如下:
%c 转储文件的大小上限
%e 所dump的文件名
%g 所dump的进程的实际组ID
%h 主机名
%p 所dump的进程PID
%s 导致本次coredump的信号
%t 转储时刻(由1970年1月1日起计的秒数)
%u 所dump进程的实际用户ID
永久修改core dump文件生效
/sbin/sysctl -w kernel.core_pattern=/tmp/corefile/core-%e-%s-%t-%u
5、创建test.c ,放在某个Liunx目录,内容如下:
#include<stdio.h>
int main()
{
int *p = NULL;
*p = 0;
return 0;
}
6、进入Liunx目录,分别调试c程序执行如下两个命令,然后去看core dump文件是否按照格式生成:
gcc -o test test.c
./test
或者
gcc -g test.c -o a.out
./a.out