41

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

4

2 回答 2

71

是的。您可以更改/proc/sys/kernel/core_pattern以定义用于生成核心文件的路径名。有关更多信息,请参阅man core

例子:

echo '/tmp/core_%e.%p' | sudo tee /proc/sys/kernel/core_pattern    # `tee' instead of > so that
                                                                   # opening happens in the
                                                                   # elevated process

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

于 2013-04-16T22:29:19.910 回答
31

在按照已接受答案中的说明进行操作之前,最好检查 的内容/proc/sys/kernel/core_pattern以查看 Redhat abrt 系统是否正在使用中。

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

如果它正在使用中,那么您已经有了一个非常广泛的方案来管理您想要在覆盖它之前了解的核心文件。

简而言之,abrt:

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

使用它的一个常见障碍是在配置文件中更改这一行:

ProcessUnpackaged = no

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

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

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

可能有更好的方法,但是 gdb 对我很有帮助,所以我没有寻找其他方法。只需将 XXXXXXX 替换为包含您的核心转储文件的文件夹即可。gdb 命令已准备好剪切和粘贴。

参考:

红帽书

CentOS 论坛

于 2014-06-28T16:30:25.270 回答