一、Core Dump 定义
Core Dump 又叫核心转存。当程序在运行过程中发生异常,这时Linux系统可以把程序出错的内存内容存储在一个core文件中,这种过程叫 core Dump。
CoreDump 主要用来对付什么样的错误呢?
Segment fault
Linux 应用程序在运行过程中,经常会遇到Segment fault(段错误)这样的错误。产生这样的错误的原因有:
数组访问越界
访问空指针
栈溢出
修改只读内存
......
1.1、CoreDump 使能
在Linux系统中,默认是关闭core dump功能的,但是可以使用ulimit命令打开/关闭 core dump 功能。
1.2、Core 文件分析
发生core dump之后,可以使用gdb进行查看core文件的内容,以定位程序出错的位置。
二、使用范例(访问空指针)
先编写如下程序:test.c
使用编译器编译,并运行:
gcc -o test -g test.c ./test
控制台输出如下:
这时候使用gdb进行调试:
gdb ./test ./core
输出如下:
这里可以看出GDB 给出了发生core dump时候的函数具体位置在 test.c 的12 行。这里打印a的信息的时候。