您的位置:首页 > 编程语言 > C语言/C++

segmentation fault (core dumped) 调试

2016-04-20 13:01 501 查看
写程序经常会遇到这样一个错误:segmentation fault (core dumped)。怎么去解决呢?

首先,就是要知道错误发生的地方。而Linux系统可以产生core文件,配合gdb就可以解决这个问题。

第一步,让系统在信号中断造成的错误时产生core文件

ulimit -c unlimited // 设置core大小为无限

ulimit unlimited //设置文件大小为无限

第二步,编译运行与原来的程序

gcc -o XXX XXX.c -g

./XXX

运行后, ls 发现多出来了core文件

第三步, 用gdb查看core文件

gdb XXX core

然后,输入bt,就会出现错误的位置。如下图



0就是错误的具体位置。具体错误可以从#3到#0来找。这里的错误是fseek第一个参数为0x0,也就是说,文件指针为NULL。再看代码,发现原来文件指针没有释放掉,所以在之后的访问同样文件时,发生了错误。

由此可见,这种调试的方法还是不错的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 调试 gdb