在开发和使用Linux程序时,我们最怕的就是莫过于程序莫明其妙的当掉了,虽然对整个系统来说是没有什么影响,但对于程序使用尤其是程序开发者来说,这显然是难以忍受的,有这样一种技术,操作系统把程序当掉时的内容保存起来,让我们在程序开发时作一个调试参考。
1、 什么是core dump?
Core,即core memory, 指由一系列小当纳圈形的磁性材料组成的存储器,这里不过是沿用了这一称呼,而dump就是堆放的意思。core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump.
2、 如何打开core dump支持?
有的操作系统并没有默认打开core dump支持,需要用ulimit -c unlimited语句进行设置,core文件生成的位置一般在程序运行的当前目录下,文件名为core.进程号(当然不同的系统也许有所不同,可以查看相手册对路径和文件名进行设置).
3、 Core dump的使用方法
首先应该在用gcc进行编译时选择-g选项,以便起动debug支持,生成可执行文件时ex,./ex运行可执行文件,如果程序当掉,则会生成一个core文件,假设为core.1568,则gdb ex core.1568进入gdb,然后再用where命令进行查看即可。
4、 举例说明
假设我的代码main.c为:
#include  < stdio.h >
int  div( int  i,  int  j)
... {
    return i / j;
}
int  main()
... {
    int i = 2;
    int j = 0;
    printf("%d ", div(i, j));
    return 0;
}

显然有一个被零除的错误,用gcc –g main.c –o main进行编译,然后./main执行,不可避免的程序要down掉,然后用gdb main core文件名 进行分析,然后你就能看到分析结果,采用这种方法,可以找到程序运行的大部分bug.

5、 其它-用kill命令查询信号的名称和值
有时候core dump显示的结果是一些信号的值,这时需要对这些值进行查询,这时要用到kill命令。
Kill –l   :列出所有信号的名称和值
Kill –l val:查询值为val的信号名称
Kill –l signame: 查询signame信号的值。
本文总结了core dump技术的基本使用方法,并进行了举例,对于初学Linux程序开发者来说,多多少少会有点帮助。

Core Dump技术介绍相关推荐

  1. core java文献翻译_外文翻译--Java技术介绍(适用于毕业论文外文翻译+中英文对照).doc...

    毕业设计(论文)外文资料翻译 学 院: 信息工程学院 专 业: 计算机科学与技术 姓 名: XXXXXXXXX 学 号: XXXXXXXXX 外文出处: Cay s.Horstmann Core Ja ...

  2. Linux core dump的详细介绍及使用

    我们在开发(或使用)一个程序时,最怕的就是程序莫明其妙地当掉.虽然系 统没事,但我们下次仍可能遇到相同的问题.于是这时操作系统就会把程序当掉 时的内存内容 dump 出来,让我们或是debugger ...

  3. 调试技术: Linux core dump file

    1. 前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们的 ...

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

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

  5. JDK core dump分析

    Java项目一般使用jstack, jmap等Java工具都可以分析进程bug,但是有时候jvm自身异常退出,此时往往没有hprof文件,而是生成了core文件,特别是在使用JNI技术的项目中,这时候 ...

  6. 容器进程Core Dump处理

    本文主要介绍了Core Dump实现容器进程的方法和相关内容. 上篇文章回顾:IPv6入门教程 引子 在我们调试程序时经常会使用到Core Dump(https://en.wikipedia.org/ ...

  7. WMI技术介绍和应用——Instance/Method Provider

    在<WMI技术介绍和应用--事件通知>一文中,我们提到了提供者(Provider)这个概念.我们还是要引入WMI的结构图(转载请指明出于breaksoftware的csdn博客) 我们在1 ...

  8. Linux上Core Dump文件的形成和分析

    Core,又称之为Core Dump文件,是Unix/Linux操作系统的一种机制,对于线上服务而言,Core令人闻之色变,因为出Core的过程意味着服务暂时不能正常响应,需要恢复,并且随着吐Core ...

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

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

最新文章

  1. 用SQL命令查看Mysql数据库大小
  2. 为什么淘宝、天猫和旺信的 App 不整合成一个?
  3. 转 : 深入解析Java锁机制
  4. 扩展iQuery使其支持多种编程语言(二) – 兼编译器的语法分析简介
  5. Qt 事件处理机制-qt源码解读
  6. wxWidgets事件处理(手机播放器连载系列2)
  7. mysql 5.6 bug_MySQL 5.6的一个bug引发的故障
  8. 【3】Keras.applications包,一堆可以复用的深度学习模型库
  9. 驴妈妈、途牛们该如何收割亲子游市场的红利?
  10. ActivityManager: Warning: Activity not started,...
  11. Python学习手册(第4版).pdf
  12. 希尔伯特空间/再生核希尔伯特空间
  13. 【毕业设计】基于单片机的太空游戏机 - 嵌入式 物联网 stm32 51
  14. 怎么启动mysql2008_SQL Server 2008初次启动
  15. win10系统脚本批处理开启和停止服务器,批处理命令一键彻底关闭WIN10自动更新...
  16. @Enumerated的使用
  17. reflections歌词翻译_reflections歌词 reflectionsLrc歌词
  18. 最新,EI期刊目录更新,又有1本期刊被剔除
  19. CentOS7搭建小型CDN
  20. PAT(乙级)2022年夏季考试

热门文章

  1. C++快慢指针理解与应用
  2. R语言svm支持向量机多元回归预测
  3. md5加密以及可逆的加密解密算法
  4. 移植智能ABC输入法到Windows XP
  5. 全网最细的Spring教程(一)
  6. AX2012 在自定义表中新建字段VATNum tooltip不好用?
  7. C#中的ulong关键字
  8. collections
  9. 【SQL语法基础】数据过滤:SQL数据过滤都有哪些方法?
  10. 图神经网络通用框架信息传递网络(MPNNs)