调试,是开发流程中一个非常重要的环节。每个程序员都应,具备调试代码的能力,尤其对于从事 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次阅读
段错误调试神器 - Core Dump详解
core大小为无限. 用gdb查看core文件: 下面我们可以在发生运行时信号引起的错误时发生core dump了. 发生
发表于 04-02 14:34
•1171次阅读
华为在中国市场测试HMS Core,用于取代Google移动服务
华为已经在中国市场测试HMS Core框架和HMS core应用程序,以取代Google移动服务(GMS)应用程序。很快,通过替换华为移动服
linux中的core dump调试与运用详解
调试,是开发流程中一个非常重要的环节。每个程序员都应,具备调试代码的能力,尤其对于从事 Linux 下的开发的读者。
嵌入式Linux如何生成Core Dump文件
运行,二者有何区别 前台运行和后台运行的区别 前后台程序生成core dump时有何区别 前台进程如何生成core dump 后台进
发表于 11-01 17:21
•17次下载
linux下调试core dump的方法
下面说明一下 linux 下调试 core dump 方法。 dmesg+addr2line调试 先介绍 2 个 linux 命令: dmesg ,一种程序,用于检测和控制内核缓冲。程序
jmap dump内存的命令是
jmap dump是Java内存映像工具(Java Memory Map Tool)的一个功能,用于生成Java虚拟机(JVM)中的堆内存快照。堆内存快照是一个包含了Java对象及其所占用内存空间
jvm的dump太大了怎么分析
分析大型JVM dump文件可能会遇到的一些挑战。首先,JVM dump文件通常非常大,可能几百MB或几个GB。这是因为它们包含了JVM的完整内存快照,包括堆和栈的所有对象和线程信息。分析这种大型
评论