core dump定位错误位置

来源:互联网 发布:linux中没有yum命令 编辑:程序博客网 时间:2024/05/01 22:06

发生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可查看栈空间。

完成定位。

0 0
原创粉丝点击