coredumpctl 是什么
进程崩溃转储由系统服务接管后会保存进日志体系,用 coredumpctl 可以列出、查看、提取转储文件,甚至直接进入调试器分析。判断进程究竟收到哪个信号退出,是排查崩溃的第一件事。
基本信息
| 用途 | 查看与提取进程崩溃转储 |
|---|---|
| 语法 | coredumpctl 子命令与匹配条件 |
| 所属 | systemd |
| 前提 | 内核转储模式指向系统转储服务 |
典型使用场景
- 崩溃定位:服务反复重启时先看有没有转储,确认是崩溃还是被外部终止
- 提取现场:把转储导出交给开发或用调试器分析
- 核对信号类型:区分非法访问与内存不足被杀,处理方向完全不同
- 检查保留策略:转储占用空间较大,需要确认不会撑满磁盘
- 准备分析环境:进入调试器前先确认调试工具与符号文件已就绪
常用示例
常用示例
coredumpctl list | tail -n 20
coredumpctl info myapp
coredumpctl dump myapp -o /tmp/myapp.core
coredumpctl gdb myapp # 直接进入调试器(需安装 gdb)
coredumpctl list --since '2 hours ago'确认配置
确认配置
cat /proc/sys/kernel/core_pattern # 常见值:管道交给系统转储服务
systemctl status systemd-coredump --no-pager | head -n 5
coredumpctl --no-pager | head子命令对照
| 子命令 | 作用 | 说明 |
|---|---|---|
| list | 列出转储 | 默认按时间倒序 |
| info | 显示崩溃详情 | 含信号、命令行与栈概览 |
| dump | 导出转储文件 | 可指定输出路径 |
| gdb | 直接进入调试器 | 需要调试器与调试符号 |
| 时间筛选 | 按时间段过滤 | 排查特定时段的崩溃 |
内核转储模式指向系统服务时转储保存在日志体系里;指向文件路径时传统转储文件落在进程的工作目录。
被强制终止的进程不产生转储,例如因内存不足被内核杀死的情况,只能靠系统日志判断。
转储有保留策略与空间上限,老旧记录会被自动清理,需要分析时尽早提取。
相邻排查手段
| 手段 | 适用 | 局限 |
|---|---|---|
| 崩溃转储管理 | 需要调用栈与内存现场 | 需权限与预先开启 |
| 内核日志 | 看被强制终止的记录 | 看不到程序内部状态 |
| 应用自身日志 | 业务级错误定位 | 崩溃瞬间可能来不及写 |
| 动态跟踪 | 难以复现的问题 | 有性能开销,需限时 |
分析崩溃要把转储与同版本的二进制、调试符号放在一起:只有地址没有符号时栈信息几乎无用。同时确认保留上限与存放位置,问题复现后尽快把现场复制出来再慢慢分析,避免被保留策略清理掉。