2013-04-16 81 views
27

我想更改核心转储文件的默认位置,以便每次生成核心转储时都转到该目录。另外,是否可以将转储文件的名称保存为坠毁在这个位置的文件?更改核心转储的位置

+0

的 “发生了什么” 的版本:http://stackoverflow.com/questions/2065912/core-dumped-but-core-file-is-不在当前目录? –

回答

44

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

例如:

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

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

+12

用于'tee'技巧+1)注意,还有'sysctl'。然后它是'sysctl -w kernel.core_pattern ='/ tmp/core_%e。%p'' – hek2mgl

+0

这不适用于CentOS 7. – Ali

+1

@Ali - “不工作”不是一个有用的问题描述。如果不检查[核心联机帮助页](http://www.unix。)中的项目符号点,com/man-page/centos/5/core /),如果问题依然存在,请提出一个新问题,评论不是讨论新问题的地方。 – mata

23

按照接受的答案的指示之前,它可能是好的想法检查/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. 具有一个启动的命令abrt-gui
  3. 增加了一个带关于失败流程附加信息的核心文件的GUI。
  4. 的配置与此文件:/etc/abrt/abrt-action-save-package-data.conf

一个使用它来改变这条线在配置文件中常见的绊脚石:

ProcessUnpackaged = no 

改变,要对从捕获核心文件的自制程序进程,否则它只会捕获程序包管理器安装的程序的核心文件。

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

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

有可能是一个更好的方式来如此,但广发行一直担任我很好,所以我没有寻找其他方法。只需将XXXXXXX替换为包含您的coredump文件的文件夹即可。 gdb命令被剪切并粘贴就绪。

参考文献:

Redhat Book

CentOS Forum

+0

感谢这个信息。我收到了coredump文件,但是如何用abrt打开它? – Devos

+0

如果您不确定核心文件是如何生成的,只需执行#file core.XYZ - 这将显示为生成核心文件而执行的命令。 – kumar