博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下用core和gdb查询出现"段错误"的地方【转】
阅读量:5992 次
发布时间:2019-06-20

本文共 762 字,大约阅读时间需要 2 分钟。

转自:

原文地址: 作者:

 

有些时候我们在一段C代码的时候,由于对一个非法内存进行了操作,在程序运行的过程中,出现了"段错误"。
 
呵呵,这种问题我想很多人会经常遇到。遇到这种问题是非常无语的,只是提示了"段错误",接着什么都没 有,如果我们一味的去看代码找太疼苦了,因为我们都相信自己写的代码没问题,现实就是现实。下面介绍一种方法,可以有效的定位出现"段错误的地方"。
 
当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。
 
什么是core dump?
core的意思是内存,dump的意思是扔出来,堆出来。
 
为什么没有core文件生成呢?
 
有时候程序down了,但是core文件却没有生成.core文件的生成跟你当前系统的环境设置有关系,可以用下面的语句设置一下便生成core文件了
 
ulimit  -c  unlimited
 
core 文件生成的位置一般于运行程序的路径相同,在ubuntu下文件名一般 为core.
 
什么是core文件
当一个程序奔溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。core文件仅仅是一个内存映像(同时加上调试信息),主要用来调试的。
 
下面我们来看看,怎样利用core文件来定位我们出现"段错误"的地方.
程序运行结果:
从上面我们可以看出,第一次运行程序出现"段错误"并没有出现core文件,一般linux操作系统默认core文件的大小都是0,需要手动设置一下。
调试core文件
core文件是个二进制文件,需要用相应的工具来分析程序崩溃时的内存映像。
 
linux下可以用gdb来调试core文件 。

从上面我们可以清楚的看到我们的程序是在那个地方出现了错误。
 
呵呵,有了这种方法,我想以后我们可以不再那么惧怕"段错误"了。

转载地址:http://mctlx.baihongyu.com/

你可能感兴趣的文章
5.30 Tree Traversal + Tree manipulation
查看>>
关于UIView的userInteractionEnabled属性
查看>>
MyPython-->进阶篇-->异常
查看>>
制定备份策略的指导方向思考
查看>>
HDU 3410 Passing the Message
查看>>
POJ 3420 Quad Tiling
查看>>
CodeForces 703C Chris and Road
查看>>
init();
查看>>
CSS3 3D的总结(初学者易懂)
查看>>
基于人脸识别的商业大数据13
查看>>
kafka和storm集群的环境安装
查看>>
ajax方式下载文件
查看>>
BZOJ 2820 莫比乌斯反演
查看>>
0616考试
查看>>
jstl
查看>>
python - 条件语句
查看>>
python全栈开发笔记---基本数据类型--数字型魔法
查看>>
生产环境elasticsearch5.0.1和6.3.2集群的部署配置详解
查看>>
centos6.5环境wget报错Unable to establish SSL connection
查看>>
TCP的三次握手和四次挥手
查看>>