麒麟os开启core dump需先启用systemd-coredump服务,再配置limits.conf放开core限制,最后用coredumpctl验证捕获与导出;测试崩溃程序可确认全流程生效。

在麒麟OS上开启开发者模式下的核心转储(core dump)捕获,是定位应用程序崩溃根源的必要前提,否则gdb无法还原调用栈,所有日志都只能停留在“程序崩了”层面,无法定位到具体哪一行代码出错。
确认系统是否已启用systemd-coredump服务
麒麟桌面系统V10默认使用systemd-coredump接管core文件生成,但部分定制版本或安全加固后可能被禁用。
执行命令查看服务状态:sudo systemctl is-active systemd-coredump。若返回inactive,说明服务未运行,需手动启用。
运行sudo systemctl enable --now systemd-coredump启动并设为开机自启。这一步必须完成,否则后续所有配置均无效——【systemd-coredump服务未激活时,即使设置ulimit -c unlimited,core文件也绝不会生成】。
放开用户级core文件大小限制
普通用户默认被内核限制core文件大小为0,需显式解除。
编辑/etc/security/limits.conf,在末尾添加两行:
* soft core unlimited* hard core unlimited
注意:星号*表示对所有用户生效;soft为当前会话限制,hard为上限值。仅改soft不改hard会导致某些shell环境(如zsh)仍受限。
修改后需重新登录终端或重启图形会话才能生效,SSH连接需重连,UKUI桌面需注销再登录。
验证core dump路径与格式
systemd-coredump默认将core文件存于/var/lib/systemd/coredump/,按时间戳和进程名组织,不可直接用file core查看。
方法一:用coredumpctl list列出全部历史崩溃记录,含可执行路径、PID、时间、信号类型;
方法二:指定程序查最近一次,例如coredumpctl info firefox;
方法三:导出原始core文件供gdb分析:coredumpctl dump -o /tmp/core.firefox firefox → 该命令将生成标准ELF格式core,可直接gdb /usr/bin/firefox /tmp/core.firefox调试。
注意:导出路径/tmp/需有写权限,且目标目录不能是NFS或noexec挂载点,否则dump失败无提示。
强制触发一次测试崩溃以验证全流程
第一步:新建测试文件crash.c,内容为int main(){char *p=NULL;*p=1;return 0;};
第二步:编译gcc -g crash.c -o crash;
第三步:执行./crash,应触发Segmentation fault;
第四步:立即运行coredumpctl list | head -n 3,确认输出中包含crash及对应时间;
第五步:执行coredumpctl dump -o /tmp/core.test crash → 成功则说明整套捕获链路已通。











