在Linux系统中,核心转储文件通常存放在哪个目录下?

核心转储文件(Core Dump)

在Linux系统中,当程序崩溃时,操作系统会生成一个包含进程内存内容的文件,称为core dump,这个文件记录了程序在崩溃时的内存状态,包括全局变量、堆、栈和寄存器信息,对于调试程序非常有帮助。

在Linux系统中,核心转储文件通常存放在哪个目录下?插图1
(图片来源网络,侵删)

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-时间戳

在Linux系统中,核心转储文件通常存放在哪个目录下?插图3
(图片来源网络,侵删)

3、参数说明

%p:插入进程ID(PID)

%u:插入当前用户ID(UID)

%g:插入当前组ID(GID)

%s:插入导致产生core的信号

在Linux系统中,核心转储文件通常存放在哪个目录下?插图5
(图片来源网络,侵删)

%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

小末小末
上一篇 2024年9月24日 02:39
下一篇 2024年9月24日 02:44

相关推荐