您的位置:首页 > 其它

core dump 初级实战

2016-01-21 00:16 477 查看

core dump

在Linux环境下写C,有的程序gcc编译未出现问题, 运行时却会出现Segment fault(段错误)。

这通常都是指针错误引起的,通过gdb一步一步调试在大型程序下是不可取的。

利用core file快速锁定问题

基本步骤:

1、检查是否允许core文件及大小

ulimit –c

若为0 则执行ulimit -c unlimited取消限制
若为unlimited,则无需设置


2、制作测试文件,空指针写数据

//coredumptest.c


#include<stdio.h>
void main()
{
int *p = NULL;
*p = 1;
}


3、gcc编译

gcc -g -o run coredumptest.c


4、查看编译效果

ls

coredumptest.c  run


5、运行可执行文件 run

./run

Segmentation fault (core dumped)


6、再次查看文件,已经生成core文件

ls

core  coredumptest.c  run


7、利用gdb找出错误位置

gdb -q ./run core  (注:-q表示gdb安静模式)

Reading symbols from ./run...done.
[New LWP 8490]
Core was generated by `./run'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x080483fb in main () at coredumptest.c:5
5          *p = 1;
(gdb)


如上所示,错误锁定程序第五行,*p = 1;

简单粗暴。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: