什么是core dump?(down = 当)

  core的意思是:内存,dump的意思是:扔出来、堆出来。

  开发和使用linux程序时,有时程序莫名其妙的down掉了,却没有任何的提示(有时候会提示core dumped)。

  这时候可以查看一下有没有形如:core 的文件生成,这个文件便是操作系统把程序down掉时的内存的内容扔出来生成的,它可以做为调试程序的参考。

  core dump又叫核心转储,当程序运行过程中发生异常,程序异常退出时,由操作系统把程序当前的内存状况存储在一个core文件中,叫core dump。

为什么没有core文件生成呢?

  有时候程序down掉了,但是core文件却没有生成。

  首先,就是要知道错误发生的地方。而Linux系统可以产生core文件,配合gdb就可以解决这个问题。

  core文件的生成跟你当前系统的环境设置有关系,可以用下面的语句设置一下, 然后再运行程序便成生成core文件了。

第一步:让系统在信号中断造成的错误时产生core文件:

  ulimit -c unlimited  // 设置core大小为无限

  ulimit unlimited      //设置文件大小为无限

第二步:编译原来的程序:

  gcc -o xxx xxx.c -g

  (-g选项的作用是在可执行文件中加入源码信息,比如可执行文件中第几条机器指令对应源代码的第几行,但并不是把整个源文件嵌入到可执行文件中,而是在调试时必须保证gdb能找到源文件。)

第三步:运行编译后的的程序:

  ./xxx(或者 xxx)

  运行后,然后 ls 发现多出来了core文件。

  core文件生成的位置一般与运行程序的路径相同,文件名一般为 core

第四步:用gdb查看core文件:

  若没有安装gdb,则需要先安装它,安装gdb参考网址:http://www.cnblogs.com/chenmingjun/p/8280889.html

  安装完成后使用如下命令:

  gdb xxx core

第五步:输入bt或者where,就会出现错误的位置,就可以显示程序在哪一行dowm掉的,在哪个函数中down掉的。如下图:

  具体错误可以从#0到#6来找。

  以上就是 core dumped调试的方法。

什么是 core dump ? 以及如何使用gdb对 core dumped 进行调试的更多相关文章

  1. Linux应用调试 :使用gdb和gdbserver进行远程调试

    一.引言 在日常程序开发中不免遇到类似空指针操作导致程序崩溃的问题,所以需要一定的手段去定位bug,而断点调试是普遍使用的技巧,比如Windows中用VC++的debug模式进单步运行.断点调试等,而 ...

  2. 使用GDB 追踪依赖poco的so程序,core dump文件分析.

    前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...

  3. linux core dump 文件 gdb分析

    core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIG ...

  4. core dump gdb调试

    core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIG ...

  5. 用GDB调试程序的设置 Segmentation fault(Core Dump)调试

    在写wifi库的时候碰见一个 Segmentation fault(Core Dump) 所以需要用GDB调试下. 在cmake的时候,修改CMakeLists.txt set(CMAKE_C_FLA ...

  6. 在Linux上利用core dump和GDB调试

    段错误(segfault) "段错误"是程序试图操作不允许访问或试图访问的不允许内存的情况.可能导致段错误的原因主要有: 1.试图解引用空指针(你不允许访问内存地址0) 2.试图解 ...

  7. 在Linux上利用core dump和GDB调试segfault

    时常会遇到段错误(segfault),调试非常费劲,除了单元测试和基本测试外,有些时候是在在线环境下,没有基本开发和测试工具,这就需要调试的技能.以前介绍过使用strace进行系统调试和追踪<l ...

  8. 進階gdb之core dump的除錯

    core dump的除錯 Basic Perl等語言處理的可以說是User的資料, C可以說在那邊把資料在記憶體移來移去, 組語可說把資料在暫存器搬來搬去, 越低階的處理表示握有的資源越少 所以C處理 ...

  9. Unix 用gdb分析core dump文件

    产生core文件条件 用ulimit -c 指定core文件大小来开启core文件的生成,如:ulimit -c unlimited 用gdb分析core文件的条件 可执行程序在编译时,需加入-g参数 ...

随机推荐

  1. 贪心算法——Fence Repair(POJ 3253)

    题目描述 农夫约翰为了修理栅栏,要将一块很长的木板切割成N块.准备切成的木板长度为L1,L2,L3--LN,未切割前木板的长度恰好为切割后木板长度的总和.每次切断木板时,需要的开销为这块木板的长度.请 ...

  2. stack 的优势 - 每天5分钟玩转 Docker 容器技术(113)

    stack 将应用所包含的 service,依赖的 secret.voluem 等资源,以及它们之间的关系定义在一个 YAML 文件中.相比较手工执行命令或是脚本,stack 有明显的优势. YAML ...

  3. kendo ui grid选中行事件,获取combobox选择的值

    背景: 以前用 telerik ui做的grid现在又要换成kendo ui,不过说句实话kendo ui真的比telerik好多,可以说超级升级改头换面.当然用的mvc的辅助方法,以前的teleri ...

  4. css 背景色渐变兼容写法

    最近在项目中,有很多地方都用到了线性渐变,比如:表单提交按钮的背景,数据展示的标题背景等等,按照以前的做法是切 1px 图片然后 repeat-x.下面我将介绍如何用 css 来完成该效果. css3 ...

  5. 使用XML序列化实现系统配置 - 开源研究系列文章

    在实际的C#软件系统开发过程中,会遇到系统配置的保存问题,以及系统存储问题.在以前的系统开发过程中,笔者使用的是INI文件配置管理的方式.到了现在,INI文件配置保存仍然是一个平常使用的方式.在博客园 ...

  6. 非常好用的弹出层 layer,常用功能demo,快速上手!

    功能强大,实用,操作方便,文档齐全. 参数灵活,丰富.可以作为开发项目的公共模块,多处使用.老文档地址:http://layer.layui.com/api.html 已经停止维护 新文档地址:htt ...

  7. 80 行代码爬取豆瓣 Top250 电影信息并导出到 CSV 及数据库

    一.下载页面并处理 二.提取数据 观察该网站 html 结构 可知该页面下所有电影包含在 ol 标签下.每个 li 标签包含单个电影的内容. 使用 XPath 语句获取该 ol 标签 在 ol 标签中 ...

  8. [js高手之路]面向对象版本匀速运动框架

    这篇文章的效果,需要看过以下3篇文章: [js插件开发教程]一步步开发一个可以定制配置的隔行变色小插件 [js高手之路]匀速运动与实例实战(侧边栏,淡入淡出) [js高手之路]打造通用的匀速运动框架 ...

  9. Struts2下载

    package com.tcf.action; import java.io.BufferedInputStream; import java.io.FileInputStream; import j ...

  10. CSS3 美女动画相框

    把下面的内容放到一个body内,运行看一看:) <style> *{ margin:0; padding:0;} .bg1{ background-image:-moz-linear-gr ...