1、查看生成core文件的开关是否开启
ulimit -c
,如果为0,则没有开启;如果为>0的一个数,则表示生成core文件的大小;如果为unlimited,则表示core文件的大小不受限制。
2、如何临时开启/关闭生成core文件功能
ulimit -c [kbytes],设置生成core文件的大小;
ulimit -c 0,不产生core文件;
ulimit -c 100,设置core文件最大为100kbytes;
ulimit -c unlimited,不限制core文件的大小
执行完毕后,可以通过ulimit -c
或者ulimit -a
查看。
3、永久生效的方法
通过修改用户环境变量、系统环境变量的方式使其永久生效,在.bashrc/.bash_profile、/etc/profile等文件中加入:ulimit -c unlimited。
重启系统生效,或者执行source /etc/profile使配置立即生效。
4、配置core文件的名称、生成路径
修改/etc/sysctl.conf,添加以下2行:
#core文件生成在/home/smart/corefile目录,名称为core-所dump的进程名-所dump的进程pid,如果没有配置目录,则在程序的执行目录生成
kernel.core_pattern=/home/smart/corefile/core-%e-%p
kernel.core_uses_pid=0
修改完成后,执行sysctl -p /etc/sysctl.conf
,使配置立即生效。
core_pattern的命名参数:
%c 转储文件的大小上限
%e 所dump的进程名
%g 所dump的进程的实际组id
%h 主机名
%p 所dump的进程pid
%s 导致本地coredump的信号
%t 转储时刻(从1970年1月1日起计的秒数)
%u 所dump进程的实际用户id
5、验证
kill -s SIGSEGV $$
,执行完成后会在/home/smart/corefile目录下生成一个core文件,则表明设置成功。