Linux下生成core文件,并用gdb调试core文件/ gdb调试段错误方法

目录

1生成core文件进行调试

1.1 ulimit -c unlimited 配置core文件大小

1.2运行程序,产生core文件

1.3 gdb调试core文件

1.4查看堆栈信息

2. 实时调试,不用core文件

2.1 进入gdb调试

2.2运行程序

2.3查看堆栈信息


在开发中我们经常会遇到段错误,这个时候首先会想到利用gdb进行调试查找段错误的原因,gdb调试段错误有两种方法,下面分别简单介绍。

使用该方法的前提是编译程序的时候要加上-g选项,使编译出来的代码具有调试信息,要不然没法使用gdb进行调试。

1生成core文件进行调试

1.1 ulimit -c unlimited 配置core文件大小

ulimit -c
ulimit -c [filesize] #设置core文件大小,当最小设置为4之后才会生成core文件
ulimit -c unlimited 

ulimit -c命令可以查看目前core开关,如果是0.表示core文件大小设置为0,也就是不生成core文件. 

ulimit -c [filesize]  命令用来设置core文件的大小,

我们一般用ulimit -c unlimited设置为不受限制.

1.2运行程序,产生core文件

我们直接运行程序,当程序再次崩溃时就会产生core文件,

./a.out

1.3 gdb调试core文件

gdb ./a.out core

上面的命令gdb ./a.out core是利用前面生成的core文件进行调试,运行之后会崩溃,

1.4查看堆栈信息

bt

用bt命令查看堆栈信息,然后就能看到崩溃的位置.综上所述,一共有四个命令,命令如下

ulimit -c unlimited
./a.out
gdb ./a.out core
bt

注意,有一次在使用的时候用bt命令看的崩溃位置根本就不对,最后发现core文件是旧的,把core文件删掉重新生成,然后再调试发现可以了

2. 实时调试,不用core文件

2.1 进入gdb调试

gdb a.out                #如果a.out没有参数
gdb --args a.out 1.jpg   #如果a.out有参数,那么用--args

上面的命令会进入gdb调试环境。

2.2运行程序

run

run命令是指在gdb环境下全速运行程序,执行该命令之后程序会崩溃到段错误的地方,

2.3查看堆栈信息

bt

跟前面一样,同样用bt命令查看堆栈信息,找到程序崩溃原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈 洪 伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值