引用:http://www.cnblogs.com/secondtonone1/p/5732938.html

Windows环境崩溃问题可根据vs调试工具查看,Linux同样可以查看调用堆栈的信息,只是

需要更改Linux设置,使程序崩溃时候产生core文件。然后gdb调试即可。

1产生core文件方法

产生coredump的条件,首先需要确认当前会话的ulimit –c,若为0,则不会产生对应的coredump,需要进行修改和设置。

ulimit  -c unlimited  (可以产生coredump且不受大小限制),这种设置仅对当前生效,如果想永久生效

那么需要在

/etc/profile中加入以下一行,这将允许生成coredump文件

ulimit-c unlimited

2更改core dump生成路径

因为core dump默认会生成在程序的工作目录,但是有些程序存在切换目录的情况,导致core dump生成的路径没有规律,

所以最好是自己建立一个文件夹,存放生成的core文件。

我建立一个 /data/coredump 文件夹,在根目录data里的coredump文件夹。

调用如下命令

echo /data/coredump/core.%e.%p> /proc/sys/kernel/core_pattern

将更改core文件生成路径,自动放在这个/data/coredump文件夹里。

%e表示程序名, %p表示进程id

3测试生成core文件以及调试

#include <iostream>
#include <stdio.h> using namespace std;
void core_test1()
{
int i = 0;
//below will call segmentfault
scanf("%d", i);
printf(%d, i); } int main()
{
core_test1();
return 0;
}

该程序在core_test1()内部scanf的时候回崩溃,i前面应该加上&

编译的时候带上-g选项,这样才能用gdb调试core

运行后结果显示段错误

进入/data/coredump文件夹可以查看生成的core

用gdb调试该core,命令为 gdb core.ctest.6408 ,显示如下

program terminated with signal 11 告诉我们信号中断了我们的程序

敲命令: bt 可以打印堆栈信息

这个一堆问号很多人遇到过,有人说是没加载符号表,有人说是标准glibc版本不一致,

可以通过如下命令调试:

gdb 可执行程序exe

进入gdb环境后

core-file  core的名字

敲命令bt可以查看准确信息。

示例:

gdb ./ctest

进入gdb环境后,敲core-file /data/coredump/core.ctest.6408

敲bt命令,这是gdb查看back trace的命令

可以看到最近的栈中存储的是调用了IO操作,之前一步是scanf,再往前能看到是

ctest.cpp中第九行 core_test1()函数出错。

到此为止,就是core文件配置生成和调试方法

core dump 配置的更多相关文章

  1. 【转】段错误调试神器 - Core Dump详解

    from:http://www.embeddedlinux.org.cn/html/jishuzixun/201307/08-2594.html 段错误调试神器 - Core Dump详解 来源:互联 ...

  2. 段错误调试神器 - Core Dump详解

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

  3. linux core dump学习

    1. core dump是什么? core dump又叫核心转储,当操作系统收到特定的signal时, 会生成某个进程的core dump文件.这样程序员可以根据 已经生成的core dump文件来d ...

  4. Linux系统打开core dump的配置【转】

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

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

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

  6. linux下core dump【总结】

    1.前言 一直在从事linux下后台开发,经常与core文件打交道.还记得刚开始从事linux下开发时,程序突然崩溃了,也没有任何日志.我不知所措,同事叫我看看core,我却问什么是core,怎么看. ...

  7. linux core dump 文件 gdb分析

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

  8. core dump gdb调试

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

  9. Linux使用笔记: 定制core dump文件的文件名

    在开发过程中,当一个Linux程序异常退出时,我们可以通过core文件来分析它异常的详细原因.缺省情况下,Linux在程序异常时不产生core文件,要想让程序异常退出时产生core dump文件,需要 ...

随机推荐

  1. 炒鸡讨厌换python版本呀

    https://www.cnblogs.com/yjlch1016/p/8641910.html 还是说,装个 Anaconda,你好我好大家好. https://blog.csdn.net/qq_3 ...

  2. 2017 cinemachine

    只有2017以上才可以使用~ 导入Asset store中的cinemachine,会在上方显示cinemachine.每创建一个虚拟摄像机,就会在主摄像机下创建组件  cinemachine Bra ...

  3. Echart横坐标时间轴滑动

    主要针对于dataZoom的使用,代码如下: option = { title: { text: '未来一周气温变化', subtext: '纯属虚构' }, tooltip: { trigger: ...

  4. centos7设置rc.local开机执行命令

    在Centos7下,rc.local文件,开机默认是不执行的 它是个软链接 [root@data-1-1 ~]# ll /etc/rc.local lrwxrwxrwx. 1 root root 13 ...

  5. Faster-RCNN理解

    一.Faster-RCNN基本结构 该网络结构大致分为三个部分:卷积层得到高位图像特征feature maps.Region Proposal Network得到候选边框.classifier识别出物 ...

  6. DateTime?,也是一种类型,代表DateTime或NULL两种类型,在处理空时间时比较有用

    public static DateTime? GetDateTimeFromStr(string date) { if (date.Trim() == string.Empty) return nu ...

  7. 一般处理程序获取get,post数据

    ashx具体代码: public class GuanWangWC : IHttpHandler { public void ProcessRequest(HttpContext context) { ...

  8. 联想IDEAPAD 320C-15笔记本显卡驱动问题

    联想IDEAPAD 320C-15笔记本显卡驱动问题核显Intel(R) HD Graphics 620独显AMD Radeon(TM) 530必须安装好核显驱动,独显驱动才能正常工作,否则设备管理器 ...

  9. Dell Inspiron 620 / Vostro 260 BIOS 开启 AHCI 模式

    1.Dell Vostro 260 台式机,WIN7 旗舰版   2.登陆 DELL 官方支持站点,获取 MS-A10.exe 安装文件   3.从网络中获取 AMIBCP.exe 工具,双击打开此程 ...

  10. ubuntu16.04 HyperLedger Fabric 1.2.0 开发环境搭建

    安装准备 1. 安装git.cRUL.gcc/g++和make $ sudo apt-get update $ sudo apt-get install build-essential git cur ...