核心转储文件(Core Dump)
在Linux系统中,当程序崩溃时,操作系统会生成一个包含进程内存内容的文件,称为core dump,这个文件记录了程序在崩溃时的内存状态,包括全局变量、堆、栈和寄存器信息,对于调试程序非常有帮助。
Core文件的位置设置
1、默认位置:
core文件会保存在程序崩溃时的工作目录下,并命名为core
,新的core文件会覆盖旧的core文件。
2、通过/proc/sys/kernel/core_pattern
配置:
可以通过编辑/proc/sys/kernel/core_pattern
文件来自定义core文件的保存位置和命名规则,使用命令echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
,将使core文件存放到/corefile
目录下,文件名为core-命令名-pid-时间戳
。
3、参数说明:
%p
:插入进程ID(PID)
%u
:插入当前用户ID(UID)
%g
:插入当前组ID(GID)
%s
:插入导致产生core的信号
%t
:插入UNIX时间戳(core文件生成的时间)
%h
:插入主机名
%e
:插入可执行文件的名称
%E
:插入可执行文件的路径名,用斜杠(/)替换为感叹号(!)。
永久设置方法
为了永久生效,可以在/etc/profile
中添加ulimit -c unlimited
命令,并在/etc/sysctl.conf
文件中添加kernel.core_pattern=/corefile/core.%e.%p.%t
,然后执行source ./sysctl.conf
使设置立即生效。
注意事项
如果core文件没有生成或找不到,可能是因为权限问题、磁盘空间不足、文件系统只读挂载等原因。
在CentOS 8等较新版本的系统中,core文件可能被systemd处理并以压缩格式存储在/var/lib/systemd/coredump/
目录中。
Linux中的core文件位置可以通过修改/proc/sys/kernel/core_pattern
来自定义,默认情况下会保存在程序崩溃时的工作目录下,通过合理配置core文件的生成和存储位置,可以方便地利用这些文件进行程序调试。
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/57210.html