1. 内核转储作用
(1) 内核转储的最大利益是能够保存问题产生时的状态。
(2) 只要有可履行文件和内核转储,就可以知道过程当时的状态。
(3) 只要获取内核转储,那么即使没有复现环境,也能调试。
centos 6 设置内核转储
统一命令为以下几条命令,后面是解释
echo "* soft core unlimited" >> /etc/security/limits.conf
echo "kernel.core_pattern = /tmp/core-%e-%s-%u-%g-%p-%t" >> /etc/sysctl.conf
echo "fs.suid_dumpable = 2" >> /etc/sysctl.conf
echo "DAEMON_COREFILE_LIMIT=’unlimited’" >> /etc/sysconfig/init
sysctl -p
编辑/etc/security/limits.conf,注意这是为所有过程设置的,但如果你有一个作为服务帐户运行的过程,请用服务帐户调换*。您一定要重新启动此过程以使此更改生效。
编辑/etc/sysctl.conf并添加放置核心文件和任何命名标准的地位。
文件名变量:
%e是文件名
%g是过程运行的gid
%p是过程的PID
%s是导致转储的信号
%t是转储产生的时间
%u是过程运行的uid
编辑/etc / sysconfig / init并设置核心文件限制。
centos 7 设置内核转储
echo -e " # enable coredump whith unlimited file-size for all users * soft core unlimited" >> /etc/security/limits.conf
echo -e " kernel.core_pattern=/tmp/core-%e-%s-%u-%g-%p-%t" >> /etc/sysctl.conf
echo -e "1" > /proc/sys/kernel/core_uses_pid
sysctl -p /etc/sysctl.conf
2,测试是不是生效
例子的源代码:
#include
int main(void)
{
int *a = NULL;
*a = 0x1;
return 0;
}
把以上源代码,写成一个a.c文件后,编译a.c文件产生一个a.out的可履行文件:
#gcc -g a.c -o a.out
修正a.out文件的权限后,履行它:
#./a.out
就会显示:
Segmentation fault(core dump)
这表现在/tmp目录下, 已经生成了a.out对应的内核转储文件。
注意:后面带有(core dump), 才阐明转储文件成功生成了。
桂哥网络特推出香港折扣服务器租用,支撑测试,售完即止欢迎点击下图懂得详情
TikTok千粉号购买平台:https://tiktokusername.com/
TOP