Linux 系统上找不到 Core Dump 文件

Linux 系统上找不到 Core Dump 文件

1

当我尝试查找核心转储文件时,我查看了类似的主题,但似乎没有一个解决方案适合我。有人可以帮我调试吗?我的应用程序在日志尾部生成输出,表明由于核心转储而失败,但该文件未在任何地方生成,并且该信息未保留在日志文件中。

Linux系统:

NAME="Red Hat Enterprise Linux Server" VERSION="7.8 (Maipo)" ID="rhel" ID_LIKE="fedora" 如前所述,我从给定的链接尝试了多种方法:

极限值

ulimit -c
unlimited

cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c %d %P %E

我检查时发现文件夹 ap 不存在

我还尝试使用以 /tmp 开头的字符串修改 /proc/sys/kernel/core_pattern

echo "/tmp/cores/core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern
/proc/sys/kernel/core_pattern: Read-only file system

如果我以 root 身份运行,这会起作用吗,因为我目前没有该访问权限?

我运行应用程序的目录中也不存在核心转储文件。

我也尝试在整个系统上查找:

find / -name 'core*'


find / -name '*apport*'

我还检查了不同的文件夹:

ls /var/cache/abrt
ls: cannot access /var/cache/abrt: No such file or directory
ls /var/crash
ls: cannot access /var/crash: No such file or directory
ls /var/spool/abrt
ls: cannot access /var/spool/abrt: No such file or directory
cat /var/log/apport.log
cat: /var/log/apport.log: No such file or directory

没有结果:

ls /var/lib/systemd/coredump/

对于以下解决方案:为了解决这个问题,我们需要确保 apport 也为非包程序写入核心转储文件。为此,请创建一个名为 ~/.config/apport/settings 的文件,其中包含以下内容: [main] unpackaged=true

cd ~/.config/apport/
cd: /opt/front/arena/.config/apport/: No such file or directory

对于解决方案:如果您在 RHEL 上缺少二进制文件的核心转储,并且在使用时abrt,请确保/etc/abrt/abrt-action-save-package-data.conf包含ProcessUnpackaged = yes

cd /etc/abrt
cd: /etc/abrt: No such file or directory

我想我已经没有选择了。谢谢

答案1

$ ulimit -c
unlimited

这很好。除非您有权限问题,否则将生成没有大小限制的核心文件。如果此命令未显示unlimited,您可以使用 更改该值ulimit -c unlimited

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c %d %P %E

如果您想要磁盘上有一个核心文件,这不是您想要的,因为此设置将核心文件重定向到程序apport(未安装)。

您可以像以前一样手动更改此设置,但您必须具有管理员权限。以 root 身份登录并使用以下命令更改 core_pattern 文件

echo /tmp/cores/core.%e.%p.%h.%t > /proc/sys/kernel/core_pattern

...或使用sudo

echo /tmp/core.%e.%p.%h.%t | sudo dd of=/proc/sys/kernel/core_pattern

最好的方法是使用sysctl:

sudo sysctl -w kernel.core_pattern=/tmp/cores/core.%e.%p.%h.%t

通常,您可以通过/etc/sysctl.conf相应的编辑使此更改永久化。

Read-only file system注意:我发现当您尝试更改文件内容时,您遇到了。看来您的 proc FS 是以只读方式安装的,在更改以下内容之前,您必须以读写权限重新安装它/proc

sudo mount -o remount,rw /proc

就是这样。现在,您的核心文件将按照您的要求在 /tmp 中生成。你可以像这样测试它(使用 Bash):

$ sleep 3 & kill -SEGV $!
[1] 4604
[1]+  Segmentation fault      sleep 3

$ ls /tmp/core*

有关核心文件的更多信息man 5 core

相关内容