Ubuntu 22.04 -如何将Core Dump文件存储在与可执行文件相同的目录中

dtcbnfnu  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(273)

我用的是Ubuntu 22.04。

cat /proc/sys/kernel/core_pattern
|/lib/systemd/systemd-coredump %P %u %g %s %t 9223372036854775808 %h

字符串
据我所知,当我的C++程序崩溃时,我使用systemd-coredump来生成coredump文件。
我想改变coredump存储位置是在同一个地方的可执行文件。
这件事让我疯狂,我红了很多超过stackoverflow,但所有的信息看起来是为旧版本的Ubuntu不是22.04。
我有办法做到吗?
P.S.我已经通过运行sudo apt-get remove apport来实现了

hkmswyz6

hkmswyz61#

原来,这是个兔子洞......
试着做以下清单中的事情:

  • 运行ulimit -s unlimited,这样您就不会对内核转储的大小有任何内存限制
  • 然后运行sudo bash -c "sudo bash -c "echo 'core.%p.%e.%t.%h' > /proc/sys/kernel/core_pattern",它会使用模式core.%p.%e.%t.%h将核心转储位置设置为本地目录
  • 但是在重新启动后这将不会持续。您可以使用此命令sudo sysctl --system找到原因,我有一行写着Applying /usr/lib/sysctl.d/50-coredump.conf,它正在改变我的核心转储模式,以通过systemd。所以我编辑了这个文件,使该行将有kernel.core_pattern=core.%e.%p.%h.%t,这是固定的,以便保存在同一文件夹中的核心转储现在在重新启动后仍然存在。

相关问题