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

http://blog.chinaunix.net/uid-26833883-id-3193279.html

有些时候我们在一段C代码的时候,由于对一个非法内存进行了操作,在程序运行的过程中,出现了"段错误"。

呵呵,这种问题我想很多人会经常遇到。遇到这种问题是非常无语的,只是提示了"段错误",接着什么都没 有,如果我们一味的去看代码找太疼苦了,因为我们都相信自己写的代码没问题,现实就是现实。下面介绍一种方法,可以有效的定位出现"段错误的地方"。

当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。

什么是core dump?

core的意思是内存,dump的意思是扔出来,堆出来。
为什么没有core文件生成呢?

有时候程序down了,但是core文件却没有生成.core文件的生成跟你当前系统的环境设置有关系,可以用下面的语句设置一下便生成core文件了
ulimit -c unlimited

core 文件生成的位置一般于运行程序的路径相同,在ubuntu下文件名一般 为core.

什么是core文件

当一个程序奔溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。core文件仅仅是一个内存映像(同时加上调试信息),主要用来调试的。

下面我们来看看,怎样利用core文件来定位我们出现"段错误"的地方.

#不限制core dump文件大小
ulimit -c unlimited #最大的 core 文件的大小, 以 blocks 为单位。
ulimit – c unlimited; 对生成的 core 文件的大小不进行限制。

程序运行结果:

从上面我们可以看出,第一次运行程序出现"段错误"并没有出现core文件,一般linux操作系统默认core文件的大小都是0,需要手动设置一下。

调试core文件

core文件是个二进制文件,需要用相应的工具来分析程序崩溃时的内存映像。

linux下可以用gdb来调试core文件 。

从上面我们可以清楚的看到我们的程序是在那个地方出现了错误。

呵呵,有了这种方法,我想以后我们可以不再那么惧怕"段错误"了。

C/C++ 中的 gdb 也是一个类似的命令行 debugger,只是用来调试 C/C++ 而已,使用的模式跟Python的pdb/ipdb相似,具体可参考 用GDB调试程序。

什么是core dump linux下用core和gdb查询出现"段错误"的地方的更多相关文章

  1. linux下用core和gdb查询出现"段错误"的地方【转】

    转自:http://blog.chinaunix.net/uid-30091091-id-5754288.html 原文地址:linux下用core和gdb查询出现"段错误"的地方 ...

  2. linux下生成core dump文件方法及设置

    linux下生成core dump文件方法及设置    from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core ...

  3. .net core在Linux下获取AD域信息

    .net core在Linux下获取AD域信息 .net Core 2.1.4 .net core现在System.DirectoryServices只支持Windows平台下使用. 参考: http ...

  4. Nginx知多少系列之(六)Linux下.NET Core项目负载均衡

    目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.负载均衡策略详解 8.Linux下.NET C ...

  5. Nginx知多少系列之(十四)Linux下.NET Core项目Nginx+Keepalived高可用(主从模式)

    目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.负载均衡策略 8.加权轮询(round rob ...

  6. core dump + LINUX 内核系列博客

    参考:http://www.cnblogs.com/ahuo/category/72819.html http://blog.csdn.net/tenfyguo/article/details/815 ...

  7. linux下tomcat服务的启动、关闭与错误跟踪

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

  8. linux下生成core dump文件方法及设置【转】

    转自:http://blog.csdn.net/mrjy1475726263/article/details/44116289 源自:http://andyniu.iteye.com/blog/196 ...

  9. linux下生成core dump文件方法

    core 文件的简单介绍 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成“核心转储”).我们可以认为 co ...

随机推荐

  1. BZOJ2149 : 拆迁队

    设$c[i]=g[i]+\frac{i(i+1)}{2}-a[i]\times i-a[i]$,$d[i]=a[i]-i$ $f[i]$表示以$i$为结尾最多保留多少个建筑,则 $f[i]=\max( ...

  2. input属性控制弹出键盘类型

    /**   * ios弹起数字键盘有三种方法   * 1. <input type="number"> 可以弹起带有小数点的键盘,可以键盘不干净,有其它各种字符,可切换 ...

  3. POJ 1845 (约数和+二分等比数列求和)

    题目链接: http://poj.org/problem?id=1845 题目大意:A^B的所有约数和,mod 9901. 解题思路: ①整数唯一分解定理: 一个整数A一定能被分成:A=(P1^K1) ...

  4. sqlite 数据类型 全面

    http://blog.csdn.net/jin868/article/details/5961263 一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断.SQ ...

  5. BZOJ3226[Sdoi2008]校门外的区间 题解

    题目大意: 有5种运算维护集合S(S初始为空)并最终输出S. 5种运算如下: U T  S∪T I T S∩T D T  S-T C T T-S S T S⊕T 基本集合运算如下: A∪B {x : ...

  6. BZOJ3294: [Cqoi2011]放棋子

    Description   Input 输入第一行为两个整数n, m, c,即行数.列数和棋子的颜色数.第二行包含c个正整数,即每个颜色的棋子数.所有颜色的棋子总数保证不超过nm. Output 输出 ...

  7. 在Javascript中监听flash事件(转)

    在Javascript中监听flash事件,其实有两种做法: 1.在特定的环境下(例如专门制作的flash),大家约定一个全局函数,然后在flash的事件中用ExternalInterface.cal ...

  8. golang gc 问题(转的)

    在实际使用go语言的过程中,碰到了一些看似奇怪的内存占用现象,于是决定对go语言的垃圾回收模型进行一些研究.本文对研究的结果进行一下总结. 什么是垃圾回收? 曾几何时,内存管理是程序员开发应用的一大难 ...

  9. row_number() over order by与利用rownum查询分页效率分析

    实际测试: 数据库:70万条数据 查询第10000页,每页10条.row_number() 耗时: 2.2秒rownum 耗时:1.3秒 查询第20000页,每页10条.row_number() 耗时 ...

  10. pr高的2级域名站点如何做优化?

    优化方法: 二级域名的内容建设也需要细致化 很多人认为,优化二级域名没有优化顶级域名那么多工作,只需要发发外链就可以了,这可以说是一个误区.我们的目的是要优化二级域名到首页,让用户能够看到,如果我们的 ...