core dump定位错误位置

本文介绍了一种通过corefile来定位Segmentation fault错误的方法。主要包括:如何设置自动生成corefile;如何在编译时加入调试信息;如何运行产生故障的程序并获取corefile;最后,使用gdb读取corefile定位错误的具体步骤。
摘要由CSDN通过智能技术生成

发生Segmentation fault时看不到错误位置,这时可以使用core file来定位。

1,设置使自动生成core file

执行ulimit -c可以得到core file的最大文件大小,默认为0,即并不记录core file,可以使用命令ulimit -c n来设置core file最大为n个blocks。但是这个设置logout会无效,且一旦设置,只能改小,不能改大。可以在文件/etc/security/limits.conf中加入* soft core unlimited完成永久设置。reboot。

2,编译文件加入调试信息

个人习惯默认使gcc,g++加入调试信息,可以在~/.bashrc中加入一句alias gcc='gcc -g -Wall',如果也写c++代码,还有alias g++='g++ -g -Wall'。省的忘记加-g选项了。

3,执行会发生段错误的可执行文件

执行后会在相同目录下发现core.xxxx文件,即core file

4,使用gdb定位错误

执行gdb a.out core.xxx读出调试信息,在gdb中输入where即可得到发生段错误的代码位置,输入bt可查看栈空间。

完成定位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值