ARM-Linux Core文件生成和配置
一 设置Core文件大小
1.1 查看Core文件大小(ulimit -a 或 ulimit -c)
ulimit -a
ulimit -c
1.2 设置Core文件大小
命令格式:ulimit -c filesize
filesize: 0 不会生成core文件
filesize:1024或者其他 core文件超出该大小被截断(单位k)
filesize:unlimited core文件的大小不受限制,保证目标机有足够的空间存下生成的core文件
1)临时设置Core文件不限制大小,断电重启之后无效ulimit -c unlimited
2)永久设置Core文件不限制大小,在目标机的开机启动脚本中加入ulimit -c unlimited
二 设置Core文件的名称和文件路径
2.1 默认的文件路径和名称
默认生成路径:输入可执行文件运行命令的同一路径下
默认生成名字:默认命名为core,新的core文件会覆盖旧的core文件
cat /proc/sys/kernel/core_pattern //查看设置的路径
cat /proc/sys/kernel/core_uses_pid //查看设置的值
2.2 设置参数说明
1)设置路径kernel.core_pattern=/tmp/core.%e.%p.%s
可以将core文件统一生成到/tmp目录下,产生的文件名为core.命令名.pid.时间戳
以下是设置参数列表:
%p - insert pid into filename 添加pid(进程id)
%u - insert current uid into filename 添加当前uid(用户id)
%g - insert current gid into filename 添加当前gid(用户组id)
%s - insert signal that caused the coredump into the filename 添加导致产生core的信号
%t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加导致产生core的可执行程序名字
2)设置PID作为文件扩展名
kernel.core_uses_pid = 0
1:添加pid作为扩展名生成的core文件名称为core.pid
0:不添加pid作为扩展名,生成的core文件名称为core
如果kernel.core_patter中没有设置%p,设置kernel.core_uses_pid = 1,最后生成的core dump文件名会加上进程ID。
如果kernel.core_patter中设置%p,则kernel.core_uses_pid设不设置无所谓。
2.3 设置参数生效
1)临时生效,断电无效
echo "/tmp/core.%e.%p.%s" > /proc/sys/kernel/core_pattern
echo "1" > /proc/sys/kernel/core_uses_pid
或者
sysctl -w kernel.core_pattern = /tmp/core.%e.%p.%s
sysctl -w kernel.core_uses_pid = 1
2)永久生效
在/etc/sysctl.conf中最后添加如下两行,没有这个配置文件,就新建一个
kernel.core_pattern = /tmp/core.%e.%p.%s
kernel.core_uses_pid= 1
保存后退出。
可以使用以下命令,使修改结果马上生效。sysctl –p /etc/sysctl.conf
使用下列命令验证是否生效
cat /proc/sys/kernel/core_pattern //查看设置的路径
cat /proc/sys/kernel/core_uses_pid //查看设置的值
三 测试是否能生成core文件
kill -s SIGSEGV pid
查看/tmp目录下是否生成了core文件