【Core Dump】核心转存 故障分析

本文介绍如何使用CoreDump来捕获Linux程序崩溃时的内存快照,从而帮助开发者定位和解决导致程序异常的问题。文章详细解释了段错误的常见原因,并提供了启用和禁用CoreDump的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言:程序在Linux系统中运行时出错的时间并不能预测,也许在三分钟之内程序就崩溃了,也许运行一个月之后才发生错误。

如果前一节课学到的GDB调试,显然调试上十天半个月是不可能的。这里我们用core dump来解决。


一、Core Dump:信息转存、核心转存。

core dump是一个过程,即Linux会把程序运行过程中发生异常的内存内容转存到core文件。

core dump主要解决段错误(Segment fault)。


二、发生段错误的基本原因有:

1、数组访问越界;

2、对空指针操作;

3、栈溢出;

4、修改只读内存的内容。


三、启用/关闭 Core Dump:

打开:ulimit -c unlimited

关闭:ulimit -c 0

(在Linux系统中默认关闭该功能)


四、Core文件分析:

在发生core dump之后会在该程序所在路径下生成一个core文件。

注意:在编译程序时需要用-g来加入调试信息,否则将让错误逃之夭夭。

> gdb  ./test  core.13140

#include <stdio.h>
#include <stdlib.h>

void main()
{
	int *ptr = NULL;
	
	*ptr = 3;
}

* gdb可以直接定位到程序出错的位置:







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值