更改核心转储的位置

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

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

提问于
用户回答回答于

是的。您可以更改/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]

用户回答回答于

在按照接受的答案中的说明进行操作之前,最好检查一下内容,/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. 有一个用命令启动的gui abrt-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替换为包含coredump文件的文件夹即可。gdb命令已剪切并准备好粘贴。

参考文献:

红帽书

CentOS论坛

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券