Core dump(核心转储)

2024-04-22 04:44
文章标签 core 核心 dump 转储

本文主要是介绍Core dump(核心转储),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • core dump


core dump

进程退出时有三种情况正常退出,退出结果不对,异常退出
在这里插入图片描述

低7位表示收到信号退出,次低八位代表进程正常退出它的退出码!在第八位有一个core dump标志位,这个标志位表示进程收到信号做的动作,是core还是term,一般默认为终止或者暂停

用man 7 signal查看
在这里插入图片描述
Term 和 Core表示收到信号的动作是终止进程。

测试core dump

#include<cstdlib>
#include<unistd.h>
#include<signal.h>
#include<string>
#include <sys/wait.h>
#include<sys/types.h>using namespace std;
int main()
{int id = fork();if(id == 0){//childint cnt = 500;while(cnt){cout << "i am a child process, pid: " << getpid() << "cnt: " << cnt << endl;sleep(1);cnt--;}exit(0);}// fatherint status = 0;pid_t rid = waitpid(id, &status, 0);if(rid == id){cout << "child quit info, rid: " << rid << " exit code: " << ((status>>8)&0xFF) << " exit signal: " << (status&0x7F) <<" core dump: " << ((status>>7)&1) << endl; // ? & (0000 0000 ... 0001)}}

将退出码收到信号和core dump打印出来查看,然后通过kill向进程发送信号
在这里插入图片描述
发送2号信号core dump是0没问题,因为它的默认动作是term,但是发送8号信号core dump还是0,8号信号默认动作是core dump,出现这样的现象是因为我这是云服务器,云服务器对于core dump功能是关闭的,虚拟机对于core dump的功能是开启的!
设置core dump
那么如何将core dump开启,可以通过ulimit -a 查看系统配置
其中有一个
在这里插入图片描述
查看core文件大小 ulimit -c

在这里插入图片描述

core 文件大小是0,这个就是core dump功能的文件,他类型是blocks,若是要将其开启,只需要对这个文件设置大小即可。
ulimit -c +想要设置的大小
在这里插入图片描述
这样就把core dump功能打开了,一般普通用户是设置不了的,没有权限这样就要sudo提权再设置!若是要关闭core dump只需要将这个core 文件大小设置为0就可以了或者重启xshell
在这里插入图片描述
把core dump打开并运行程序向进程发送8号信号查看结果
在这里插入图片描述

可以发现此时core dump标志位变为了1
并且在当前目录形成了一个很大的core.进程pid文件这个文件中存放的是进程出异常的信息。
打开文件core dump功能,一旦进程出异常了,操作系统会将进程在内存中的运行信息给我dump(转储)到进程的当前目录中(磁盘),形成core。pid文件,这样的功能为:核心转储(core dump)

那么为什么要进行核心转储?

这是因为可以方便事后调试!因为程序出错,这样的错误是运行时错误,一个程序崩掉了,就可能想知道是怎么错的或者是什么时候出错的,或者在哪一行出错的,就可以通过core
dump查看这些错误信息

,core dump提供在运行时出错了的信息给我们查看,之后再让对应程序以可调试的方式运行,然后再启动gdb调试,直接输入core 文件就可以知道程序的出错原因!

在这里插入图片描述
把文件导入会直接定位到出错原因!
core文件中存储了程序出错的原因!core dump功能方便事后调试。这个功能可以用在以后程序出错,实在是找不到bug的时候,可以使用core 方式它可以直接复现问题之后直接定位到出错行,先运行再core-file,这样是事后调试等到程序崩溃了再调试!
那么为什么云服务器要关闭core dump呢?

因为每次core
dump都i形成一个core.pid文件这个文件夹并且还是很大的,若是一个服务器中出现大量程序错误,然后形成大量的core文件,这会给磁盘带来消耗并且可能危及到操作系统,所有服务器一般是将这个功能关闭的,若是用户在有需要的时候可以将其开启!

这篇关于Core dump(核心转储)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/924839

相关文章

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

JAVA初级掌握的J2SE知识(二)和Java核心的API

/** 这篇文章送给所有学习java的同学,请大家检验一下自己,不要自满,你们正在学习java的路上,你们要加油,蜕变是个痛苦的过程,忍受过后,才会蜕变! */ Java的核心API是非常庞大的,这给开发者来说带来了很大的方便,经常人有评论,java让程序员变傻。 但是一些内容我认为是必须掌握的,否则不可以熟练运用java,也不会使用就很难办了。 1、java.lang包下的80%以上的类

JVM、JRE和 JDK:理解Java开发的三大核心组件

Java是一门跨平台的编程语言,它的成功离不开背后强大的运行环境与开发工具的支持。在Java的生态中,JVM(Java虚拟机)、JRE(Java运行时环境)和JDK(Java开发工具包)是三个至关重要的核心组件。本文将探讨JVM、JDK和JRE的区别,帮助你更好地理解Java的运行机制。 1. JVM:Java虚拟机(Java Virtual Machine) 什么是JVM? JVM,即

jupyter在加载pkl文件时报错ModuleNotFoundError: No module named 'pandas.core.internals.managers'; '的解决方法

笔者当看到这个错误的时候一脸懵逼,在pycharm上正常运行的code 放在jupyter就不成了,于是就研究一翻。 一开始以为自己的pkl文件有问题,研究重点放在这里,最后发现不是。 然后取搜索pycharm和jupyter下的python的\Lib\site-packages\pandas\core\internals有什么不同 发现jupyter下没有pandas\core\intern

Java语言的四大核心特性:让开发更高效、更灵活

目录 1. 面向对象编程(OOP) 2. 跨平台特性:Write Once, Run Anywhere 3. 多线程支持:并发编程的强大工具 4. 编译与解释并存:性能与灵活性的平衡 结语:Java的核心特性赋能开发 Java作为全球最流行的编程语言之一,凭借其强大的语言特性和广泛的应用场景,深受开发者的青睐。本文将探讨Java的四大核心特性:面向对象编程(OOP)、跨平台特性

gs_dump和gs_dumpall 迁移数据库

目录 0、源端实例收集AWR1、创建目录2、gs_dump - 业务停机3、gs_dumpall - 业务停机4、拷贝文件5、目标实例导入数据 0、源端实例收集AWR https://blog.csdn.net/hezuijiudexiaobai/article/details/134220949 1、创建目录 mkdir -p /pgdata/data/opengauss-

首次揭秘,面向核心业务的全闪分布式存储架构设计与实践

当今是云计算、大数据的时代,企业业务持续增长需要存储系统的 IO 性能也持续增长。 机械盘本身的 IOPS 一直徘徊在数百的级别,为了提高传统存储的性能,有些存储厂商加了缓存层,然而目前应用正由单一走向多元化,导致 IO 特征无法预测,缓存也难以发挥作用。 机械盘依赖盘片的旋转和机械臂的移动进行 IO,目前转速基本达到物理极限,所以机械盘性能一直徘徊不前,无法满足企业核心业务对于存储性能的要求