0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在程序中什么是core dump

麦辣鸡腿堡 来源:盼盼编程 作者:晨梦思雨 2023-10-08 16:07 次阅读

调试,是开发流程中一个非常重要的环节。每个程序员都应,具备调试代码的能力,尤其对于从事 Linux 下的开发的读者。

从事 linux 下后台开发,有时候会遇到程序突然崩溃的情况,也没有任何日志,这会让你不知所措。

今天给大家介绍一个 core 文件,用这个文件,我们可以找出对应出错的代码行,感觉是不是很神奇。

什么是core dump

对于程序,由于各种异常或者 bug,导致在运行过程中,并且在满足一定条件下,产生一个叫做 core 的文件。

通常情况下,core 文件会包含了,程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等。

许多程序出错的时候,会产生一个 core 文件。通过工具分析这个文件,我们可以定位到,程序异常退出的时候对应的堆栈调用等信息。

打开 core dump 开关:ulimit -c unlimited

看一段有问题的代码:

#include< stdio.h >
 
int main()
{
       int *p=NULL;
       *p=0;
 
       printf("badn");
       return 0;
}

linux下编译和执行:

[root@VM-16-9-centos c++]# g++ -g main.cpp 
[root@VM-16-9-centos c++]# ./a.out 
Segmentation fault (core dumped)
[root@VM-16-9-centos c++]# ls
a.out  core.1989  main.cpp

上述代码一看就有错误,执行会产生 core dump。但是在大型项目中,用肉眼就很难看了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11304

    浏览量

    209506
  • 调试
    +关注

    关注

    7

    文章

    578

    浏览量

    33943
  • 文件
    +关注

    关注

    1

    文章

    566

    浏览量

    24744
  • 程序
    +关注

    关注

    117

    文章

    3787

    浏览量

    81047
收藏 人收藏

    评论

    相关推荐

    ESP32_MINI烧录程序后遇到esp_core_dump_flash问题怎么解决?

    ) esp_core_dump_flash: Core dump flash config is corrupted! CRC=0x7bd5c66f instead of 0x0 Rebooting... ets
    发表于 07-01 06:52

    多核ipc中断的使用,请问core1要发中断,如何触发?中断服务程序是放在哪个core的工程里面?

    本帖最后由 一只耳朵怪 于 2018-6-19 15:27 编辑 c6657core1通过外设接收新的数据,core1来做信号处理;处理的结果再在
    发表于 06-19 07:49

    关于系统应用core dump的分析

    解决段错误,系统应用core dump的分析 这个错误单片机上往往以hardfault的错误出现,分析思路都是分析堆栈的位置;单片机的编译软件,如果可以仿真(比如keil或者IAR),复现故障
    发表于 03-02 06:10

    sdk编写的c程序是如何变成dump文件的?

    各位前辈,sdk编写的c程序是如何变成dump文件的,他的转换过程大概是什么,还有就是转化后的dump文件的main部分为啥
    发表于 08-11 07:21

    你知道Linux Core Dump是什么?

    程序运行的过程异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件,这种行为就叫做Core
    发表于 05-10 11:11 2834次阅读

    学会用core dump调试程序错误

    . 嵌入式系统,有时core dump直接从串口打印出来,结合objdump查找ra和epa地址,运用栈回溯,可以找到程序出错的地方。
    发表于 05-16 16:44 1302次阅读
    学会用<b class='flag-5'>core</b> <b class='flag-5'>dump</b>调试<b class='flag-5'>程序</b>错误

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

    core大小为无限. 用gdb查看core文件: 下面我们可以发生运行时信号引起的错误时发生core dump了. 发生
    发表于 04-02 14:34 1171次阅读

    华为中国市场测试HMS Core,用于取代Google移动服务

    华为已经中国市场测试HMS Core框架和HMS core应用程序,以取代Google移动服务(GMS)应用程序。很快,通过替换华为移动服
    的头像 发表于 02-24 16:24 4355次阅读

    虚拟机:Linux设置core dump文件名的格式

    虚拟机:Linux设置core dump文件名的格式
    的头像 发表于 06-22 17:50 2930次阅读
    虚拟机:Linux设置<b class='flag-5'>core</b> <b class='flag-5'>dump</b>文件名的格式

    linuxcore dump调试与运用详解

    调试,是开发流程中一个非常重要的环节。每个程序员都应,具备调试代码的能力,尤其对于从事 Linux 下的开发的读者。
    的头像 发表于 04-12 14:24 2126次阅读

    嵌入式Linux如何生成Core Dump文件

    运行,二者有何区别 前台运行和后台运行的区别 前后台程序生成core dump时有何区别 前台进程如何生成core dump 后台进
    发表于 11-01 17:21 17次下载
    嵌入式Linux如何生成<b class='flag-5'>Core</b> <b class='flag-5'>Dump</b>文件

    内核转储是怎么设置的?

    程序运行的过程异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件,这种行为就叫做 Core
    的头像 发表于 02-17 15:57 612次阅读

    linux下调试core dump的方法

    下面说明一下 linux 下调试 core dump 方法。 dmesg+addr2line调试 先介绍 2 个 linux 命令: dmesg ,一种程序,用于检测和控制内核缓冲。程序
    的头像 发表于 10-08 16:13 633次阅读

    jmap dump内存的命令是

    jmap dump是Java内存映像工具(Java Memory Map Tool)的一个功能,用于生成Java虚拟机(JVM)的堆内存快照。堆内存快照是一个包含了Java对象及其所占用内存空间
    的头像 发表于 12-05 10:38 3159次阅读

    jvm的dump太大了怎么分析

    分析大型JVM dump文件可能会遇到的一些挑战。首先,JVM dump文件通常非常大,可能几百MB或几个GB。这是因为它们包含了JVM的完整内存快照,包括堆和栈的所有对象和线程信息。分析这种大型
    的头像 发表于 12-05 11:01 2669次阅读