第三季-第3课-Coredump程序故障分析

问:如果一个程序运行3天后才会出错,这个时候难道需要我们一直用GDB调试程序3天吗?
答:我们需要更加厉害的武器——Core dump

3.1 core dump的定义

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

3.2 segment fault

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

l  数组访问越界

l  访问空指针

l  栈溢出

l  修改只读内存

3.3 core dump使能

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

打开:ulimit -c unlimited

关闭:ulimit -c 0

3.4 core文件分析

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

用法:gdb程序名core文件名

例如:gdb ./test core.12525,必须是./test的形式

3.4 错误分析

在我们用gcc命令去生成文件的时候,我们需要加上-g这一个指令。因为有这个指令的存在我们才能看到文件的详细信息。在我们执行./seg1时候生成的core文件能将具体的问题加以体现。

转载于:https://www.cnblogs.com/free-1122/p/11341931.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值