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

来源:互联网 发布:寒假工代理知乎 编辑:程序博客网 时间:2024/06/05 19:41

引言:程序在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可以直接定位到程序出错的位置:







0 0
原创粉丝点击