linuxcoredumped命令
linuxcoredumped命令详细介绍
在 Linux 系统中,核心转储(Core Dump)是程序崩溃时生成的文件,用于调试分析。以下是与核心转储相关的常用命令和配置方法:
一、启用核心转储
1.
查看 / 设置核心转储文件大小限制
- 查看当前限制:
bash- 若输出为
0,表示核心转储被禁用。 - 若为具体数值(单位:块,1 块 = 512 字节),或
unlimited(无限制)。
- 若输出为
- 临时启用(当前终端生效):
bashunlimited - 永久生效(针对用户或系统):
- 修改用户限制文件(如
~/.bashrc或/etc/security/limits.conf),添加:conf* soft core unlimited # 所有用户启用核心转储 - 需重新登录或执行
source使配置生效。
- 修改用户限制文件(如
2.
配置核心转储文件的名称和路径
- 查看当前配置:
bash/proc/sys/kernel/core_pattern- 默认值可能为
core(生成文件名为core,位于程序崩溃目录),或包含路径(如/var/lib/systemd/coredump/%p.core,systemd 环境)。
- 默认值可能为
- 临时修改(立即生效):
bash- 常用转义符:
%p:进程 ID%t:时间戳(秒级)%e:程序名%h:主机名%u:用户 ID
- 常用转义符:
- 永久修改:
编辑/etc/sysctl.conf,添加或修改:
confkernel.core_pattern = /path/to/core-%p-%t保存后执行
sudo sysctl -p生效。
二、生成核心转储文件
当程序崩溃(如收到未处理的信号,如段错误、非法指令等),系统会在指定路径生成核心文件(需确保上述配置已启用)。
三、调试核心转储文件
使用 gdb 加载可执行文件和核心文件进行调试:
bash
gdb 可执行文件路径 核心文件路径gdb bt
gdb list
四、常见问题
- 核心文件未生成?
- 检查
ulimit -c是否为 0(需启用)。 - 确认程序崩溃时的信号是否允许生成核心转储(如
SIGKILL不会生成)。 - 检查路径权限(如自定义路径需有写入权限)。
- 检查
- 核心文件过大?
- 通过
ulimit -c <大小>限制文件大小,或通过core_pattern设置路径(如/tmp/避免占用根目录空间)。
- 通过
- systemd 环境下的核心转储
- systemd 使用
systemd-coredump管理核心转储,文件存储在/var/lib/systemd/coredump/,可通过以下命令查看:bashsystemd-coredump listsystemd-coredump info coredump文件
- systemd 使用
总结
核心转储的关键步骤:
- 启用核心转储(
ulimit -c unlimited)。 - 配置文件名和路径(
core_pattern)。 - 程序崩溃时生成核心文件。
- 用
gdb调试分析。
根据实际需求调整配置(如系统范围或用户级设置),并注意权限和存储路径的合理性。