【Linux】Core dump故障分析

引入:

Q:如果一个程序运行3天后才会出错,这个时候难道需要我们一直用GDB调试程序3天吗?

A:答案当然是否定的。

我们有更厉害的工具——Core dump

一、Coredump定义

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

二、Segment Fault

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

——Segment fault

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

  • 数组访问越界
  • 访问空指针
  • 栈溢出
  • 修改只读内存

三、Core Dump使能

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

打开:ulimit -c unlimited
关闭:ulimit -c 0(零)

四、Core文件分析

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

	gdb 程序名 core 文件名

	gdb ./test core.12551

注意!!!:程序带有符号信息

——编译时需要带有 -g 否则调试时造成困难

定位出错位置

posted @ 2017-08-01 16:13  Neo007  阅读(633)  评论(0编辑  收藏  举报