执行文件编译时加入-g 命令

例如 g++ -g test.cpp

查看当前系统限制情况

ulimit -a

设置crash dump 文件大小

ulimit -c unlimited 
unlimited表示无大小限制,也可以指定具体的大小 
ulimit -c 1000 
表示文件大小限制为1000Kb 
若要全局生效需要在/etc/profile中加入上面的命令ulimit -c 1000,然后source /etc/profile使之生效

配置dump文件生成路径

/proc/sys/kernel/core_uses_pid 
文件内容为1表示dump文件以pid为扩展名 
/proc/sys/kernel/core_pattern 
core_pattern接受的是core文件名称的pattern,它包含任何字符串,并且用%作为转移符号生成一些标示符,为core文件名称加入特殊含义。已定义的标示符有如下这些: 
%%:相当于% 
%p:相当于pid 
%u:相当于uid 
%g:相当于gid 
%s:相当于导致dump的信号的数字 
%t:相当于dump的时间 
%e:相当于执行文件的名称 
%h:相当于hostname 
除以上这些标志位外,还规定: 
1、末尾的单个%可以直接去除; 
2、%加上除上述以外的任何字符,%和该字符都会被去除; 
3、所有其他字符都作为一般字符加入名称中; 
4、core文件的名称最大值为64个字节(包括’\0’); 
5、core_pattern中默认的pattern为core; 
6、为了保持兼容性,通过设置core_uses_pid,可以在core文件的末尾加上%p; 
7、pattern中可以包含路径信息。 
echo “/corefile/core-%e-%p-%t” > /proc/sys/kernel/core_pattern 
将会控制所产生的core文件会存放到/corefile目录下(/corefile目录需要提前创建),产生的文件名为core-执行文件名-pid-时间戳

在发生SIGSEGV时系统会自动在程序目录下生成core.xxxx文件,此即dump文件; 
注意,此时程序不能再注册SIGSEGV的处理函数! 
使用gdb分析dump文件: 
1.执行gdb:gdb –core=core.xxxx 
2.在gdb中加载符号文件:file ./a.out 
上两步也可以统一成:gdb a.out core.xxxx 
3.定位到出错代码:where或backtrace,将显示#x这样的堆栈信息 
4.查看更详细的函数调用信息:frame x,x为#后的数字

记录linux 生成crash dump文件步骤的更多相关文章

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

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

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

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

  3. 解决linux下不生成core dump文件

    core dump的概念: A core dump is the recorded state of the working memory of a computer program at a spe ...

  4. linux 平台core dump文件生成

    1. 在终端中输入ulimit -c 如果结果为0,说明当程序崩溃时,系统并不能生成core dump. root@hbg:/# ulimit -c0root@hbg:/# 2.使用ulimit -c ...

  5. dotnet core调试docker下生成的dump文件

    最近公司预生产环境.net core应用的docker容器经常出现内存暴涨现象,有时会突然吃掉几个G,触发监控预警,造成容器重启. 分析了各种可能原因,修复了可能发生的内存泄露,经测试本地正常,但是发 ...

  6. Ubuntu16.04下写的Qt程序,调试时没问题,运行时偶现崩溃 (需要在运行时生成core dump文件,QMAKE_CC += -g)

    记录一下 Ubuntu16.04下写的Qt程序,调试时没问题,运行时偶现崩溃 需要在运行时生成core dump文件 首先在pro结尾里加入 QMAKE_CC += -g QMAKE_CXX += - ...

  7. vs 自动生成core dump文件

    一直以来觉着core dump这个东西很神奇,在初步学习的时候也没有个大方向,最近项目需要记录程序崩溃时的日志信息,因此在网上寻找相关的信息,此时core dump也成为了我重点关注的东西. 说说我的 ...

  8. 编写的windows程序,崩溃时产生crash dump文件的办法

    一.引言 dump文件是C++程序发生异常时,保存当时程序运行状态的文件,是调试异常程序重要的方法,所以程序崩溃时,除了日志文件,dump文件便成了我们查找错误的最后一根救命的稻草.windows程序 ...

  9. [Android]生成heap dump文件(.hprof)

    Android生成heap dump文件(.hprof) 一个heap dump就是一个程序heap的快照,能够获知程序的哪些部分正在使用大部分的内存. 它保存为一种叫做HPROF的二进制格式.对于A ...

随机推荐

  1. JS实现数组去重(重复元素保留一个)

    1.遍历数组法 它是最简单的数组去重方法(indexOf方法) 实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中: var arr=[2,8,5, ...

  2. zabbix-将业务机器加入到监控中

    一.设置被监控的机器 1. 配置主机名 echo "agent.test.com" > /etc/hostname hostname agent.test.com 2.安装z ...

  3. 浅谈JAVA继承关系中的构造函数

    话不多说直接上例子,我的例子中定义了两个类,TheSon和TheFather,TheSon继承了TheFather,如图: TheSon类的定义: ​ TheFather类的定义: 当我们初始化The ...

  4. nmap中文帮助文档

    简介: Nmap(“ Network Mapper ”)是用于网络探索和安全审核的开源工具.它设计用于快速扫描大型网络,尽管它可以在单个主机上正常运行.Nmap以新颖的方式使用原始IP数据包来确定网络 ...

  5. 用arduino的uno开发板为nano板子烧写bootloader

    这篇文章,是为了记录下某宝上淘到的一个没有bootloader的nano开发板的历程(比较坑),自己搜索资料而记录的. 如果没有bootloader,板子就不能接收上传的程序,什么也干不了. 烧写bo ...

  6. #使用Python的turtle绘制正六边形、叠边形

    1.#Python的turtle绘制正六边形 代码: len=100 #表示边长像素 import turtle as t #正六边形内角都是120度,外角60度 for i in range(6): ...

  7. 创建conda虚拟环境以及python的virtualenv虚拟环境

    我觉得我,嗯...可能脑袋里面有水 首先说一个,就是我电脑安装了conda2和conda3,原来怎么查看conda版本都是2,所以就没有创建虚拟环境 系统变量里面的path要改,总共有3个: D:\A ...

  8. 分享一波目前写的最强的autohotkey 插件

    支持各种软件快速切换,补全括号,代码等!!!!!!!! ;这种全局定义要写在所有代码的前面才能让所有代码起作用. SetCapsLockState , AlwaysOff SetNumlockStat ...

  9. Linux文件系统之install(复制文件和设置文件属性)

    install命令 install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户.install命令和cp命令类似,都可以将文件/目录拷贝到指定的地点.但是,install允许你控制目标 ...

  10. ASP.Net用户控件的使用

    一.概述: 与WEB窗体页相同,程序员可以使用任何文本编辑器创作用户控件,或者使用代码隐藏类开发用户控件.此外,与WEB窗体页一样,用户控件可以在第一次请求时被编译并存储在服务器内存中,从而缩短以后请 ...