gdb调试

core文件:内存的映像,当程序崩溃时,存储内存的相应信息,主用用于对程序进行调试,默认生成位置与可执行程序位于同一目录下。

core文件的打开与关闭:

关闭或阻止core文件生成:

$ulimit -c 0

打开core文件生成:

$ulimit -c unlimited

这种方式只在此次调试中有效,虚拟机重启需重新设置。

ulimit -c 1024则限制产生的core文件的大小不能超过1024kb

ulimit -c unlimited进行设置,就可以把core文件的大小设置为无限大

开启core, 采集程序崩溃的状态

在 /etc/profile 最后一行添加 上面设置全局开启 core文件调试,大小不限. 最后 立即生效.

sudo vi /etc/profile


# No core files by default 0, unlimited is oo
ulimit -S -c unlimited > /dev/null 2>&1


source /etc/profile

生成的core文件同名会覆盖. 需要为其加上一个 core命名规则,在 /etc/sysctl.conf 文件中添加系统配置,立即启用

对于core后面的参数含义:

%%:相当于%

%p:相当于<pid>

%u:相当于<uid>

%g:相当于<gid>

%s:相当于导致dump的信号的数字

%t:相当于dump的时间

%e:相当于执行文件的名称

%h:相当于hostname

./core_%t_%p_%e :生成的文件位于当前目录_时间_进程号_可执行文件名

sudo vi /etc/sysctl.conf


# open, add core.pid 
kernel.core_pattern = ./core_%t_%p_%e
kernel.core_uses_pid = 1



sysctl -p /etc/sysctl.conf

下面状态表示core启用了.

gdb -c core   (-c指定core文件) 

在不知道是哪个执行文件生成的core文件时,我们可以使用 gdb -c core_xx   (-c指定core文件),这可以显示生成此core文件的可执行程序名,我的显示的是: Core was generated by ' ./break' , 说明我的可执行文件是break

然后执行 gdb break core_xx可调试代码错误

一般的段错误在执行gdb break core_xx 会显示错误的点

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值