最近升级到 systemd 后没有核心转储?

最近升级到 systemd 后没有核心转储?

当我执行我正在处理的程序时,它失败并显示以下消息:

...
Aborted (core dumped)

但是,不会创建核心转储。核心转储是以前编写的,我不记得我更改了与之相关的任何内容。

当我跑ulimit -a回来时,

$ ulimit -a
core file size          (blocks, -c) unlimited
...

其他要点,

  • 我验证了我的用户可以在当前目录中创建文件。
  • 我读到了关于/proc/sys/fs/suid_dumpable.目前,它在我的机器上设置为 0。我尝试将其更改为 1 或 2,但没有区别。
  • 我还尝试以 root 身份执行该程序,但这也没有什么区别。

不幸的是,我不记得什么时候可以生成最后一次成功的核心转储。

答案1

从文档开始coredump.conf

要禁用供应商提供的配置文件,建议的方法是/dev/null在 中的配置目录中放置一个符号链接/etc/,其文件名与供应商配置文件相同。

sudo ln -s /dev/null /etc/sysctl.d/coredump.conf
sudo systemd-sysctl 

自 systemd 以来,事物的管理方式有所不同。

答案2

您可能希望使用该coredumpctl命令来检索核心转储或在其上运行 gdb。这是处理它们的“systemd 批准”方法。:-/

从某种意义上说,systemd 捕获所有这些东西是件好事,因为它会在一段时间后自动删除它们,并且还可以轻松上传错误报告的故障转储。

但是,对于那些在 systemd 参与之前就知道 coredump 如何工作的人来说,这是一个令人震惊的变化,几乎没有通知或提示。即使删除一个名为“core.pid.txt”的文件,其中包含使用 coredumpctl 获取 coredump 的说明以及如何关闭文件的创建.txt也会有很大帮助,尽管这些也会乱七八糟文件系统一段时间。

相关内容