Ubuntu 20.04中Core Dump仅在/var/crash生成的原因咨询
问题原因分析:仅在/var/crash目录生成Core Dump的现象
你的问题核心原因是Ubuntu 20.04默认的崩溃报告服务apport接管了Core Dump的处理流程,而非直接生成传统的core文件,具体逻辑如下:
core_pattern配置的指向
从你提供的/proc/sys/kernel/core_pattern内容可以看到,系统把core dump的处理交给了apport:|/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E这里的管道符
|表示内核会把core dump数据传给后面的apport程序处理,而不是直接写入本地文件。apport的目录规则
/var/crash是apport默认的崩溃报告存储目录,当程序在该目录运行崩溃时,apport会直接将包含core dump的崩溃报告写入该目录(即你看到的_var_crash_a.out.1000.crash文件)。- 在其他目录(如
/home/ubuntu)运行程序时,apport默认不会在当前目录生成可见的core文件,而是会按照系统配置在后台处理崩溃信息,不会在用户目录留下直观的dump文件。
"Aborted (core dumped)"的含义
终端显示的这个提示只是内核层面的反馈,表示触发了core dump的条件,但实际的dump数据已经被apport接管处理,并没有生成传统的core文件留在当前目录。
解决办法(如需生成传统core文件)
如果希望在程序崩溃的当前目录生成标准core文件,可以修改core_pattern配置:
echo "core.%p" | sudo tee /proc/sys/kernel/core_pattern
修改后,程序崩溃时会在当前目录生成core.进程ID格式的core dump文件。
内容的提问来源于stack exchange,提问作者myquest6 sh
相关产品推荐
相关产品推荐

