Core Dump(核心转储)是指当程序崩溃时,操作系统将程序的内存状态保存到一个文件中的过程。这个文件通常称为core文件,包含了程序崩溃时的内存映像、寄存器状态等信息,便于开发者进行调试和分析。
/proc/sys/kernel/core_pattern
这个文件决定了core文件的命名规则和存储位置。
echo "/var/crash/core.%e.%p" > /proc/sys/kernel/core_pattern
使用 ulimit
命令设置允许生成core文件的最大大小。
ulimit -c unlimited
某些应用程序可能有自己的配置文件来控制core dump的行为。
原因:
/proc/sys/kernel/core_pattern
未正确配置。解决方法:
假设你有一个简单的C程序 test.c
:
#include <stdio.h>
#include <stdlib.h>
void crash() {
int *ptr = NULL;
*ptr = 1; // 这将导致段错误
}
int main() {
crash();
return 0;
}
编译并运行:
gcc -g test.c -o test
./test
如果core dump开启成功,会在 /var/crash
目录下生成一个core文件。
开启Core Dump对于Linux系统下的程序调试至关重要。通过正确配置内核参数和使用 ulimit
命令,可以有效捕获和分析程序崩溃时的状态,从而快速定位和解决问题。
领取专属 10元无门槛券
手把手带您无忧上云