什么是 Core Dump

程序崩溃时,系统可以将当时的内存映像写入磁盘文件(core dump),用于事后用 GDB 调试分析崩溃原因。

查看当前设置

# Bash
ulimit -c

# C Shell
limit coredumpsize

输出为 0 表示禁止生成,unlimited 表示无大小限制。

开启 Core Dump

# Bash(单位:KB)
ulimit -c unlimited    # 无限制
ulimit -c 102400       # 最大 100MB

# C Shell(单位:B)
limit coredumpsize unlimited

永久生效

/etc/security/limits.conf 中添加:

*  soft  core  unlimited

或编辑 /etc/profile,添加 ulimit -c unlimited

Core 文件位置

# 查看当前 core 文件路径模板
cat /proc/sys/kernel/core_pattern

# 设置路径(例如统一放到 /var/core/)
echo "/var/core/core.%e.%p.%t" | sudo tee /proc/sys/kernel/core_pattern

使用 Core Dump 调试

gdb ./program core
(gdb) bt       # 查看崩溃时的调用栈