我已经使用 ulimit 启用了无限制的核心文件大小:
ulimit -a
core file size (blocks, -c) unlimited
...
我相信我已经触发了核心转储,但我无法在我的主目录、var/...等中找到核心文件...
您知道 Ubuntu 在哪里配置核心转储位置吗?
答案1
答案2
默认情况下,Ubuntu 内核配置为使用 apport 来记录核心转储。您可以通过覆盖来覆盖此功能,有关详细信息/proc/sys/kernel/core_pattern
,请查看“核心转储文件的命名”部分man core
。例如:
echo '/tmp/core.%e.%p.%t' | sudo tee /proc/sys/kernel/core_pattern
Apport 将核心转储写入/var/crash/_path_to_program.userid.crash
,但它只会对从主 ubuntu apt 存储库安装的应用程序执行此操作。
有关 apport 的更多信息:https://wiki.ubuntu.com/Apport
答案3
在 Ubuntu 16.04.3 LTS 上,我的核心转储位于:
/var/lib/systemd/coredump/core.application-name.0.24d47e89526c4c7e90953998d2c33d1e.19672.1516049424000000000000
因此,要运行它gdb
,您可以运行:
apt install gdb gdb /path/to/your/binary/application-name /var/lib/systemd/coredump/core.application-name.0.24d47e89526c4c7e90953998d2c33d1e.19672.1516049424000000000000