先查看内存转储的大小限制:

ulimit -c

返回的结果是以512 bytes为单位的。
如果没有返回结果,说明设置为0,需要进行手动设置:ulimit -c unlimited
测试代码:

#include <stdio.h>
void foo()
{int *ptr = 0;*ptr = 7;
}int main()
{foo();return 0;
}

运行会报错如下:

segmentation fault (core dumped)

因为之前设置了大小为500,所以当前目录下回出现文件core

下面对core文件进行分析,一般是使用gdb进行分析(Linux下C++的调试工具基本只有gdb)

-> # gdb ./test core
GNU gdb (Debian 7.12-6) 7.12.0.20161007-git
Reading symbols from ./test...done.
[New LWP 5794]
Core was generated by `./test'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000000000400492 in foo () at test.cpp:5
5       *ptr = 7;
warning: File "/usr/local/lib64/libstdc++.so.6.0.26-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file addadd-auto-load-safe-path /usr/local/lib64/libstdc++.so.6.0.26-gdb.py
line to your configuration file "/root/.gdbinit".
To completely disable this security protection addset auto-load safe-path /
line to your configuration file "/root/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:info "(gdb)Auto-loading safe path"

这里说明了第5行有问题。
我们可以使用backtrace列出程序崩溃时产生的调用堆栈:

(gdb) backtrace
#0  0x0000000000400492 in foo () at test.cpp:5
#1  0x00000000004004a4 in main () at test.cpp:10

在调用堆栈中上下移动:

(gdb) up
#1  0x00000000004004a4 in main () at test.cpp:10
10      foo();
(gdb) down
#0  0x0000000000400492 in foo () at test.cpp:5
5       *ptr = 7;

参考:C++ Tutorial - Debugging: Core/Memory Dump - 2018

C++ CORE DUMP gdb 调试相关推荐

  1. linux core文件GDB调试方法

    一.如何使用core文件 1. 使用core文件 在core文件所在目录下键入: gdb -c coreXXX 它会启动GNU的调试器,来调试core文件,并且会显示生成此core文件的程序名,中止此 ...

  2. php core,使用 gdb 调试 PHP core

    一.开启 查看是否开启 core dump 输出 ulimit -a 打开 core dump 文件记录 ulimit -c unlimited yum install gdb php-dbg 关闭 ...

  3. linux c++ 程序运行core,gdb调试显示cannot access memory at address

    如题,在linux环境写的c++程序,运行时core了,gdb调试core文件显示:cannot access memory at address 参考了:GDB调试,遭遇"cannot a ...

  4. 用gdb调试core dump文件

    gdb基本的使用方法在此就不说了. 载入core文件的命令行为: dgb exe core 例如 gdb ./testall ./core.2345 最重要的一个命令是where,这个就像windbg ...

  5. GDB调试core文件样例(如何定位Segment fault)

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

  6. Core Dump调试

    环境 本文以笔者操作系统ubuntu14.04 LTS为例介绍core dump功能. 首先查看系统是否使能了core dump功能: $ ulimit -c 0 返回0表示没有使能,我们需要使能该功 ...

  7. 学会用core dump调试程序错误

    最来在项目中遇到大型程序出现SIGSEGV ,一直不知道用core dump工具来调试程序,花了近一周的时间,才定位问题,老大很生气,后果很严重,呵呵,事后仔细学习了这块的知识,了解一点core du ...

  8. Linux环境崩溃生成core文件以及调试

    Windows环境崩溃问题可根据vs调试工具查看,Linux同样可以查看调用堆栈的信息,只是 需要更改Linux设置,使程序崩溃时候产生core文件.然后gdb调试即可. 1产生core文件方法 产生 ...

  9. 六招制敌,搞定 core dump 问题

    [CSDN 编者按]我们在开发或使用一个程序时,最怕的就是程序莫名其妙的当掉,虽然系统没事,但我们下次仍可能遇到相同的问题.这到底该如何解决呢? 责编 | 欧阳姝黎 缘来缘起 core的最原始含义是磁 ...

最新文章

  1. Solr 4.x定时、实时增量索引 - 修改、删除和新增索引
  2. 2017年06月07号课堂笔记
  3. 连麦互动直播方案全实践1:什么是连麦互动直播?
  4. 【Pytorch神经网络理论篇】 22 自编码神经网络:概述+变分+条件变分自编码神经网络
  5. C++:内存分几个区
  6. 基于jedis的Redis工具类
  7. QT保留小数点后位数
  8. Web前端程序员必备 前端面试题汇总(1)
  9. 毕业设计,MD2模型动画展示
  10. 委托的定义和使用入门-天轰穿
  11. 数独高阶技巧之八——SDC
  12. 发现一php木马代码
  13. android代码禁用软键盘,如何强制禁用软键盘
  14. 【Linux】进程的概念(1)
  15. 安卓查看中文官网、API、安卓文档
  16. 最全电商分类信息(05)
  17. 1元钱分成1分2分5分
  18. ReDim, split
  19. 关于招投标项目经理需要知道什么
  20. Cadence Allegro如何添加叠层?

热门文章

  1. cocos2dx android protobuf,Quick_Cocos2d_x V3.3 Protobuf Android
  2. java交通工具的类继承代码_Java作业-交通工具继承
  3. mSystem:西农韦革宏组细菌-真菌互作影响微生物多样性-土壤养分循环关系
  4. Microbiome:扩增子检测环境样本单细胞真核生物和寄生虫的新方法
  5. 高级转录组分析和R数据可视化专题研讨会(2019.12)
  6. Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot)、通过size参数指定数据点的大小
  7. R语言构建随机森林模型错误解决:Error in y - ymean : non-numeric argument to binary operator
  8. R语言使用比例-位置图(Scale-Location Plot)和Breusch-Pagan检验验证回归模型残差的同方差性(方差齐性)
  9. NLP自然语言常见问题及相关模型训练数据格式示例
  10. 语音识别、传统语音识别、带权有限转态转换器、深度语音识别、时序分类、CTC解码