mat*_*ata 61
是的.您可以更改/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
Run Code Online (Sandbox Code Playgroud)
将导致所有未来的核心转储生成/tmp
并命名core_[program].[pid]
Mic*_*ter 26
在按照接受的答案中的说明进行操作之前,最好检查一下内容,/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
Run Code Online (Sandbox Code Playgroud)
如果它正在使用中,那么您已经拥有了一个非常广泛的方案来管理您希望在覆盖之前理解的核心文件.
简而言之,abrt:
/var/spool/abrt/
abrt-gui
/etc/abrt/abrt-action-save-package-data.conf
使用它的一个常见障碍是在配置文件中更改此行:
ProcessUnpackaged = no
Run Code Online (Sandbox Code Playgroud)
将其更改为yes以从您的自制程序进程捕获核心文件,否则它将仅从程序包管理器安装的程序中捕获核心文件.
[编辑以回答如何使用coredump]为了检查核心转储,我这样做:
cd /var/spool/abrt/XXXXXXX
gdb $(cat executable) coredump
Run Code Online (Sandbox Code Playgroud)
可能有更好的方法,但gdb对我很有帮助,所以我没有寻找其他方法.只需将XXXXXXX替换为包含coredump文件的文件夹即可.gdb命令已剪切并准备好粘贴.
参考文献:
归档时间: |
|
查看次数: |
87013 次 |
最近记录: |