我用的是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
来实现了
1条答案
按热度按时间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
,这是固定的,以便保存在同一文件夹中的核心转储现在在重新启动后仍然存在。