有些时候我们在一段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文件 。

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

linux下用core和gdb查询出现段错误的地方相关推荐

  1. 什么是core dump linux下用core和gdb查询出现段错误的地方

    什么是core dump   linux下用core和gdb查询出现"段错误"的地方 http://blog.chinaunix.net/uid-26833883-id-31932 ...

  2. linux下gdb使用core文件调试程序,解决“段错误核心已转储“的问题

    一.core文件介绍以及用途: 1.core文件是什么? core文件包含了程序运行时的内存状态.寄存器状态.堆栈指针.内存管理信息以及各个函数使用堆栈信息等等: 当程序运行过程中出现段错误(Segm ...

  3. Linux下的程序调试——GDB

    无论是多么优秀的程序员,都难以保证自己在编写代码时不会出现任何错误,因此调试是软件开发过程中的一个必不可少的 组成部分.当程序完成编译之后,它很可能无法正常运行,或者会彻底崩溃,或者不能实现预期的功能 ...

  4. linux下调试core dump方式汇总,工作必备技能

    缘起 调试,是开发流程中一个非常重要的环节.每个程序员都应,具备调试代码的能力,尤其对于从事 Linux 下的开发的读者. 从事 linux 下后台开发,有时候会遇到程序突然崩溃的情况,也没有任何日志 ...

  5. linux追踪tomcat报错信息,linux下tomcat服务的启动、关闭与错误跟踪

    linux下tomcat服务的启动.关闭与错误跟踪,远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务: 1).启动tomcat服务 进入tomcat主目录下的bin目录,然后执行如下 ...

  6. Linux下MySql出现#1036 – Table ‘ ‘ is read only 错误解决方法

    Linux下MySql出现#1036 – Table ' ' is read only 错误解决方法 参考文章: (1)Linux下MySql出现#1036 – Table ' ' is read o ...

  7. linux登陆ftp报错425,linux下命令行连接FTP是遇到的错误(425 Failed to establish connection)...

    linux下命令行连接FTP是遇到的错误(425 Failed to establish connection) 首先FTP的运行模式有主动模式和被动模式两种 然后笔者在工作中搭建了ftp,但是没有开 ...

  8. 让你提前认识软件开发(51):VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改

    第3部分 软件研发工作总结 VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改 [文章摘要] Pclint是一种C/C++软件代码静态分析工具.它是一种更加严格的编译器,能够发 ...

  9. Linux虚拟内存管理 | 虚拟地址与物理地址映射、段错误SIGSEGV

    目录 x86 内存寻址 x86 分页机制 虚拟内存地址管理 虚拟地址与物理地址映射 - do_page_fault() 推荐阅读 Linux的内存管理分为 虚拟内存管理 和 物理内存管理,本文主要介绍 ...

最新文章

  1. Lowbit Sum 规律
  2. Oracle 11gR2 RAC恢复OCR和VOTE DISK
  3. Leetcode--162. 寻找峰值
  4. pacbio 原始下机数据h5 文件简介
  5. vc显示jpg,gif图像简单方法
  6. ACM/ICPC 之 BFS+状态压缩(POJ1324(ZOJ1361))
  7. 11/27 记事本
  8. python编程游戏-Python游戏趣味编程
  9. 兄弟7180dn拆机_兄弟DCP-7010拆机图解
  10. 基于C#的图片浏览及显示功能(源码)
  11. 如何用极路由+OpenWrt+RTL电视棒搭建一台SDR服务器,并隐秘地捕获和传输数据
  12. 中科院华为诺亚提出ViG:一种全新的骨干网络,性能不输CNN、ViT!
  13. 基于GIS技术的城市交通管理应用
  14. SurfaceView出现ANR:Surface has already been released的解决办法
  15. 甜甜用计算机计算1050,NVIDIA GTX 1050/1050 Ti发布:75W功耗、取代GTX960
  16. 关于springboot整合mybatisplus中找不到数据库中的表的问题
  17. Mac磁盘读写神器Tuxera NTFS for Mac2023功能介绍
  18. VirtualBox不能为虚拟电脑打开一个新任务
  19. 可以说今年最详细的面试要点!耗时两个礼拜,五章8000字面试长文,写简历—阿里Offer一步到位!
  20. 中文版PyCharm改为英文版PyCharm

热门文章

  1. Android实践 -- 对apk进行系统签名
  2. spring+mybatis实现读写分离
  3. 为普通Object添加类似AttachedProperty的属性
  4. 【转】系统缓存全解析二:动态缓存(4)-第三方分布式缓存解决方案 Memcache(2)...
  5. 启动tomcat出现too many connections的原因及解决方法
  6. 2019 GUDT RC 2 Problem C(题解)
  7. python 12306 车次数据获取
  8. 数据同步 rsync+notify架构
  9. iOS app 企业内部发布及HTTPS服务器配置
  10. spartan6不能直接把时钟连到IO上