更改核心转储的位置

我想更改核心转储文件的默认位置,以便每次生成核心转储时都转到该目录。另外,是否可以通过此位置中的崩溃文件的名称来保存转储文件?

Solutions Collecting From Web of "更改核心转储的位置"

是的。 您可以更改/proc/sys/kernel/core_pattern来定义用于生成核心文件的路径名。 欲了解更多,请看man core

例:

 echo '/tmp/core_%e.%p' | sudo tee /proc/sys/kernel/core_pattern 

会导致所有未来的核心转储在/tmp生成并被命名为core_[program].[pid]

在遵循接受的答案中的指示之前,检查/proc/sys/kernel/core_pattern以查看Redhat abrt系统是否正在使用可能是个好主意。

 -> cat /proc/sys/kernel/core_pattern |/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %te 

如果正在使用,那么您已经有一个相当广泛的管理核心文件的方案,您可以在覆盖之前了解这些文件。

简而言之,abrt:

  1. 把核心文件放在这里: /var/spool/abrt/
  2. 有一个以命令abrt-gui开始abrt-gui
  3. 使用关于失败进程的附加信息扩充核心文件。
  4. 配置这个文件: /etc/abrt/abrt-action-save-package-data.conf

使用它的一个常见绊脚石就是在配置文件中改变这一行:

 ProcessUnpackaged = no 

将其更改为yes以从自制程序中捕获核心文件,否则将仅捕获程序包管理器安装的程序的核心文件。

[编辑回答如何使用核心转储]要检查核心转储我这样做:

 cd /var/spool/abrt/XXXXXXX gdb $(cat executable) coredump 

可能有更好的办法,但是gdb给了我很好的帮助,所以我没有找到其他方法。 只需将XXXXXXX替换为包含您的核心转储文件的文件夹即可。 gdb命令被剪切并粘贴就绪。

参考文献:

Redhat书

CentOS论坛