core dump 初级实战
2016-01-21 00:16
477 查看
core dump
在Linux环境下写C,有的程序gcc编译未出现问题, 运行时却会出现Segment fault(段错误)。这通常都是指针错误引起的,通过gdb一步一步调试在大型程序下是不可取的。
利用core file快速锁定问题
基本步骤:1、检查是否允许core文件及大小
ulimit –c 若为0 则执行ulimit -c unlimited取消限制 若为unlimited,则无需设置
2、制作测试文件,空指针写数据
//coredumptest.c
#include<stdio.h> void main() { int *p = NULL; *p = 1; }
3、gcc编译
gcc -g -o run coredumptest.c
4、查看编译效果
ls coredumptest.c run
5、运行可执行文件 run
./run Segmentation fault (core dumped)
6、再次查看文件,已经生成core文件
ls core coredumptest.c run
7、利用gdb找出错误位置
gdb -q ./run core (注:-q表示gdb安静模式) Reading symbols from ./run...done. [New LWP 8490] Core was generated by `./run'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x080483fb in main () at coredumptest.c:5 5 *p = 1; (gdb)
如上所示,错误锁定程序第五行,*p = 1;
简单粗暴。
相关文章推荐
- 异步交互之Ajax原生编写
- 开篇
- BootStrap入门教程 (三)
- 结构体作为对象的属性
- 【C语言】写冒泡排序可以排序多个字符串。
- 如何用angularjs制作一个完整的表格之五__完整的案例
- The server quit without updating PID file
- 用Mysql5.6出现时间问题Incorrect datetime value: '' for column 'createtime'
- [cocoapods]安装cocoapods
- CodeForces 173A - Rock-Paper-Scissors 数学
- Eclipse编译class文件无法更新,以及资源文件未生效
- 3,gps定位原理及格式
- KMP算法
- 读 程序猿之华丽转身,菜鸟4步曲有感!
- JAVA的字符集的部分汉字字节数的知识点
- 如何用angularjs制作一个完整的表格之四__自定义ng-model标签的属性使其支持input之外的html元素
- 1月20日作业-第三题
- ==和equals的区别
- iOS开发实践之cell下载图片(自定义NSOperation)
- POJ 3279 搜索(反转)