「精品博文」linux编程之 Core Dump-Dump文件

一、Core Dump 定义

Core Dump 又叫核心转存。当程序在运行过程中发生异常,这时Linux系统可以把程序出错的内存内容存储在一个core文件中,这种过程叫 core Dump。

CoreDump 主要用来对付什么样的错误呢?

Segment fault

Linux 应用程序在运行过程中,经常会遇到Segment fault(段错误)这样的错误。产生这样的错误的原因有:

  • 数组访问越界

  • 访问空指针

  • 栈溢出

  • 修改只读内存

  • ......

1.1、CoreDump 使能

在Linux系统中,默认是关闭core dump功能的,但是可以使用ulimit命令打开/关闭 core dump 功能。

「精品博文」linux编程之 Core Dump

1.2、Core 文件分析

发生core dump之后,可以使用gdb进行查看core文件的内容,以定位程序出错的位置。

「精品博文」linux编程之 Core Dump

二、使用范例(访问空指针)

先编写如下程序:test.c

「精品博文」linux编程之 Core Dump

使用编译器编译,并运行:

gcc -o test -g test.c ./test

控制台输出如下:

「精品博文」linux编程之 Core Dump

这时候使用gdb进行调试:

gdb ./test ./core

输出如下:

「精品博文」linux编程之 Core Dump

这里可以看出GDB 给出了发生core dump时候的函数具体位置在 test.c 的12 行。这里打印a的信息的时候。

推荐阅读