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
命令,可以有效捕获和分析程序崩溃时的状态,从而快速定位和解决问题。
腾讯云数据库TDSQL训练营
腾讯云数据库TDSQL(PostgreSQL版)训练营
腾讯云数智驱动中小企业转型升级·系列主题活动
腾讯技术创作特训营第二季第3期
2022OpenCloudOS社区开放日
企业创新在线学堂
云+社区沙龙online第6期[开源之道]
云原生正发声
领取专属 10元无门槛券
手把手带您无忧上云