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。再看代码,发现原来文件指针没有释放掉,所以在之后的访问同样文件时,发生了错误。
由此可见,这种调试的方法还是不错的。
首先,就是要知道错误发生的地方。而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++实现JNI接口需要注意的事项
- Linux 自检和 SystemTap
- 关于指针的一些事情
- Python 七步捉虫法
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- 路由器的配置与调试
- 对于技术人员的出现了运行时间错误,是否要进行调试的解决方法
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法