Core Dump 是指操作系统在程序崩溃时自动生成的一份内存转储文件。这份文件包含了程序崩溃时的内存状态、寄存器值、堆栈跟踪等信息,用于后续的调试和分析。
原因:
ulimit
设置限制了 core 文件的大小。解决方法:
# 检查当前的 ulimit 设置
ulimit -a
# 设置 core 文件大小无限制
ulimit -c unlimited
# 确保 /var/crash 目录存在且有写权限
mkdir -p /var/crash
chmod 777 /var/crash
原因:
解决方法:
ulimit
限制 core 文件的大小。split
工具自动分割大文件。# 设置 core 文件最大为 1GB
ulimit -c 1073741824
# 配置 sysctl 参数,自动分割 core 文件
echo "/var/crash/core.%p.%s.%t" > /proc/sys/kernel/core_pattern
原因:
解决方法:
gdb
。file
命令检查 core 文件的完整性。# 安装 gdb
sudo apt-get install gdb
# 检查 core 文件
file /var/crash/core.1234
假设我们有一个简单的 C 程序 test.c
,故意引入一个内存访问错误:
#include <stdio.h>
int main() {
int *ptr = NULL;
*ptr = 10; // 这将导致段错误
return 0;
}
编译并运行该程序:
gcc -g test.c -o test
./test
程序崩溃后,会在当前目录下生成一个 core
文件。使用 gdb
进行调试:
gdb ./test core
在 gdb
提示符下,输入 bt
查看堆栈跟踪:
(gdb) bt
这将显示导致崩溃的函数调用链,帮助我们定位问题所在。
通过以上步骤,您可以有效地利用 core dump 文件进行故障排查和程序优化。
领取专属 10元无门槛券
手把手带您无忧上云