core dump 初级实战

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;

简单粗暴。

你可能感兴趣的:(gdb,gcc,C语言,调试,core-dump)