首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >什么是 core dump ? 以及如何使用gdb对 core dumped 进行调试

什么是 core dump ? 以及如何使用gdb对 core dumped 进行调试

作者头像
黑泽君
发布于 2018-10-11 08:07:16
发布于 2018-10-11 08:07:16
8.9K0
举报
文章被收录于专栏:黑泽君的专栏黑泽君的专栏

什么是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调试的方法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-01-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在ubuntu中进行core dump调试
在Linux环境下执行程序的时候,有的时候会出现段错误(‘segment fault’),同时显示core dumped,就像下面这样:
王云峰
2019/12/25
4.5K0
Linux core dump有什么用?
进程崩溃时,Linux会将崩溃前进程的内存状态保存在core文件里,就像保存了案发现场的照片,可以帮助开发人员找到事故原因,修复程序。本文用简单的例子讲解如何根据core文件,定位进程崩溃的原因。 首先编写C++代码,定义一个空指针,对空指针所指向的内存区域写,发生段错误
震八方紫面昆仑侠
2020/07/22
6.5K0
深入浅出GDB调试器
GDB全称GNU symbolic debugger,它是诞生于GNU开源组织的(同时诞生的还有 GCC、Emacs 等)UNIX及UNIX-like下的调试工具,是Linux下最常用的程序调试器,GDB 支持调试多种编程语言编写的程序,包括C、C++、Go、Objective-C、OpenCL、Ada 等。但是在实际应用中,GDB 更常用来调试C和C++程序。虽然说在Linux系统下我们可以借助诸多集成开发工具来完成程序的编写和调试,但实际上,调试C/C++程序一定是直接或者间接使用GDB完成的。所以说GDB调试几乎可以说是Linux程序员必备的基本技能。本文将手把手教你使用GDB调试程序,并带你深入了解什么是GDB调试器。
mindtechnist
2024/08/08
8370
深入浅出GDB调试器
C语言段错误调试神器(core dump)
core dump 可以理解为当程序崩溃时,自动将内存信息保存到文件中。这里的 core 就是 memory,dump 就是将内存数据保存到磁盘的过程。
混说Linux
2022/11/18
2.4K0
C语言段错误调试神器(core dump)
关于Segmentation fault (core dumped)几个简单问题
有的程序可以通过编译,但在运行时会出现Segment fault(段错误)。这通常都是指针错误引起的。但这不像编译错误一样会提示到文件一行,而是没有任何信息。一种办法是用gdb的step, 一步一步寻找。但要step一个上万行的代码让人难以想象。 我们还有更好的办法,这就是core file。
孙杰
2019/10/29
11.8K0
GDB入门教程之如何使用GDB启动调试
写在前面:今天开始尝试写写除Vim外的其他内容,仍然是以技术为主,可能涉及的内容包括Linux、正则表达式、gdb、makefile等内容,不知道小伙伴们有没有兴趣看呢?不管如何,也算是我自己的知识沉淀吧~
我被狗咬了
2019/09/25
4.6K0
GDB入门教程之如何使用GDB启动调试
linux系统下如何调试C/C++程序【越早知道越好】
研发语言是C或者C++的小伙伴,无论是从事服务端开发,还是客户端开发,都需要掌握linux系统下关于C/C++代码的调试能力。
liuzhen007
2023/09/23
7320
有了core-dump文件,BUG终于解决了!
core-dump文件,又称为核心转储,是操作系统在进程收到某些信号终止运行时,将此时进程的地址空间、进程状态以及其他信息写入到一个文件中,这个文件就是core-dump文件,其主要是为了方便开发人员调试,定位问题。
董哥聊技术
2023/01/18
1.8K0
C/C++生态工具链——GDB调试器
GDB全称是GNU symbolic debugger,是Linux平台下最常用的一款调试器。GDB主要用于C/C++开发场景,同时也支持Go、Ada等语言的调试。GDB主要以命令行的形式在shell终端使用,它的一部分底层逻辑借助于ptrace进行实现。GDB的功能很强大,开发者可以在执行时修改函数变量的值以及程序的执行顺序,还可以在程序执行期间查看函数的调用过程、堆栈数据等,也可以利用GDB对代码进行断点调试。
Coder-ZZ
2023/02/23
1.8K0
C/C++生态工具链——GDB调试器
【Core dump】关于core的相关配置:关于核心转储文件core dump的显示和设置位置
检查核心转储文件是否被启用,其中core file size项应该不是0【0表示禁用】。如果是0,可以使用ulimit -c unlimited 来启用核心转储文件的生成。
SarPro
2024/04/15
8550
【Core dump】关于core的相关配置:关于核心转储文件core dump的显示和设置位置
内核转储的设置
当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做 Core Dump(中文有的翻译成“核心转储”)。
嵌入式与Linux那些事
2023/02/13
2.2K0
内核转储的设置
GDB调试core文件样例(如何定位Segment fault)
core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIGSEGV信号,然后就会core dump)
阳光岛主
2019/02/19
4.7K0
GDB调试学习
简介 GDB是GCC的调试工具。其功能如下: 启动程序,使程序按自定义形式运行; 使程序停止指定断点位置; 程序停止后,检查程序执行中的相应情况; 动态改变程序执行环境。 gdb调试 能进行GDB调试,一般在编译过程中,需使用-g参数。如果不使用-g参数,则在gdb调试过程中,将不能得到程序的函数名、变量名等信息,而只能看见运行时内存地址。举例如下: 启动gdb调试的方法有以下三种: 常用的调试有以下几种: b <行号> // 停在程序的指定一行 b <函数名称> // 停在程序的某个函数处 b *<函数
云深无际
2020/10/23
1.5K0
GDB调试学习
linux下core file size设置笔记
现象说明:突然发现一台测试机器的java程序莫名其妙地没了,但是没有core dump!这就需要打开服务器的core文件生成的功能了,(即core dump文件),方便程序调试。 1)core文件简介 core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信息,主用用于对程序进行调试。当程序崩溃时便会产生core文件,其实准确的应该说是core dump 文件,默认生成位置与可执行程序位于同一目录下,文件名为core.***,其中***是某一数字。 2)开启或关闭core文件的生成 查看core文件生
洗尽了浮华
2018/01/23
4.9K0
GDB调试-从入门实践到原理
在上篇文章中,我们分析了线上coredump产生的原因,其中用到了coredump分析工具gdb,这几天一直有读者在问,能不能写一篇关于gdb调试方面的文章,今天借助此文,分享一些工作中的调试经验,希望能够帮到大家。
高性能架构探索
2022/08/25
3.3K0
GDB调试-从入门实践到原理
Linux下gdb调试方法
GDB(GNU Debugger)是Linux环境下一款强大的命令行调试工具,由GNU项目提供,用于帮助开发者诊断和修复程序中的错误。它支持多种编程语言,包括C、C++、Fortran、Pascal以及其他使用GNU编译器集合(GCC)编译的语言。GDB提供了丰富的功能,如设置断点、单步执行代码、查看和修改变量值、查看调用堆栈、分析内存、执行程序直到特定条件满足等,这些都是软件开发和调试过程中不可或缺的工具。
DS小龙哥
2025/05/27
2900
coredump分析
(1)shell命令行临时设置,只在当前shell有效,其他shell无效,也可将配置放到启动脚本/etc/profile 或~/.bashrc等
Uncle匠
2025/01/08
3000
linux常用命令--开发调试篇
Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题。本文将简单介绍一下这些命令。
编程珠玑
2019/09/03
1.6K0
一文搞懂 | C语言编程必备技能—GDB调试
GDB(GNU Debugger) 是一款开源调试工具,支持多种编程语言(如 C、C++、Python 等),主要用于在程序运行时检查其状态,包括变量值、内存布局、调用堆栈等。它可以帮助开发者定位逻辑错误、内存泄漏、段错误等问题。
C语言中文社区
2025/06/24
4130
一文搞懂 | C语言编程必备技能—GDB调试
Linux Core Dump 解析
Core Dump 也称之为“核心转储”, 若当前操作系统开启了 core dump ,当程序运行过程中发生异常或接收到某些信号使得程序进程异常退出时, 由操作系统把程序当前的内存状况以及相关的进程状态信息存储在一个 Core 文件中, 即 Core Dump 。通常,Linux 中如果内存越界会收到 SIGSEGV 信号,然后就会进行 Core Dump 相关操作。
Luga Lee
2021/12/09
4K0
相关推荐
在ubuntu中进行core dump调试
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档