Linux下 生成coredump文件前配置

news2024/10/6 16:23:28

一. Linux下coredump文件


在 Linux 系统下,存在一种 coredump机制。

Linux 系统下,在进行 C/C++ 开发时,经常会遇到程序运行突然崩溃的问题。这时可以通过离线调试即 coredump 方式进行 bug 的定位。

具体为当程序出现段错误时,内核错误,通常出现这类的问题是低级bug中的内存访问越界、使用空指针、堆栈溢出等情况。使程序运行过程中异常退出或者终止,满足这些条件就会产生coredump  的文件。

注意:使用 coredump文件分析方法,来定位代码运行崩溃问题时,前提是代码在编译阶段需要加入 -g 编译选项。

二.  更改 coredump文件的生成路径

1.  关闭 apport.service 服务程序

apport.service 服务程序是 ubuntu 系统中自带的程序,默认是开启的。功能是自动生成崩溃报告,官方为了自动收集错误的软件。

在 ubuntu 系统下经过验证,在Linux 系统默认情况下,同时开启 coredump 功能的前提下,对存在段错误的C 代码进行(带 -g 编译选项)进行编译,运行时不会生成 coredump 文件。

经过百度,网上很多技术网友提到,ubuntu 系统默认情况下,会开启一个叫 apport.service 服务程序。这个服务程序用于自动生成崩溃报告,官方为了自动收集错误的。

注意:ubuntu 系统中的 apport.servie 服务程序如果开启着,则无法生成 coredump 文件,因为生成的 coredump 文件已经被这个服务程序处理了。

关闭 apport.service 服务程序方法,Linux终端输入如下命令:

sudo service apport stop      //关闭 apport.service 服务程序

关闭 ubuntu系统下的 apport.service 服务程序,程序运行崩溃时,就会生成 coredump 文件,默认名字为 core 文件,默认与可执行程序在同一目录下。操作如下:

2. 更改 coredump 文件生成路径

在 ubuntu 系统中,默认情况下,当程序运行崩溃时,会生成名字为 core 的 coredump 文件,而且就在可执行程序的当前目录下。

更改 coredump 文件路径的方法分两种:临时更改方式与永久更改方式。

首先,在 /home/wangtian/ 目录创建一个 coredump_file 文件 。

临时更改方法:终端输入命令,命令如下:

echo '/home/wangtian/coredump_file/%t-%e-%p-%c.core' > /proc/sys/kernel/core_pattern

永久更改方法:修改 ubuntu 系统下 /etc/sysctl.conf 文件。

在 /etc/sysctl.conf 文件中添加如下一行:

kernel.core_pattern = /home/wangtian/coredump_file/%t-%e-%p-%c.core

以上两种修改 coredump 文件生成路径的方法,经过测试,都可行。

即可执行程序运行时崩溃时会在 /home/wangtian/coredump_file 目录下生成 1669735675-main.out-3209-209715200.core 文件,如下所示:

三.  Linux 下无法生成 coredump文件的可能原因

Linux 系统下,在进行 C/C++ 开发时,当程序运行突然崩溃时,无法生成 coredump 文件,可能的原因如下:

1.   coredump 功能可能没有开启。

检查是否开启 coredump 功能。终端输入 ulimit -c 命令确认。

开启 coredump 功能有两种方法:临时开启方式与永久开启方式。

2. 被 ubuntu 系统中 apport.service 服务程序自动处理了(即被系统的服务程序吞掉了)。

ubuntu 系统默认情况下,开启了一种服务程序 apport.service。即自动生成崩溃报告,官方为了自动收集错误的。

处理的方法: 可以关闭系统的 apport.service 服务程序(注意:这种方法只是一种临时关闭的,当系统重启后,apport.service 服务程序又会开启)。

输入如下命令,可以临时关闭该服务:

sudo service apport stop    //关闭错误报告

3.  生成 coredump 文件的信号被用户程序捕捉。

操作系统在程序发生异常,而异常信号在进程内部又没有被捕获的情况下,方可生成 coredump 文件。

4. 生成的 coredump 文件太大。

可以通过输入 ulimit -c 命令,可以查询 所设置的 生成的 coredump 文件限制大小。

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

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

相关文章

用匠心创造可期未来!与广州流辰信息科技一起携手创佳绩!

当今社会世界经济一体化趋势逐渐明朗化,竞争也愈发激烈,同时,这也是一个机遇与挑战并存的开放社会。在机遇面前,作为企业,要紧紧抓住机遇,顺势而为,创造辉煌佳绩;在挑战面前&#xf…

Hostlink读写寄存器报文分析

引言 Hostlink是欧姆龙PLC默认的串口上行通信协议,使用默认的通信协议可免除PLC端的配置工作,易于实现分工协作。下面以CP1E-E的PLC为例进行说明,CP系列的PLC规则都是一样的。 读离散量 请求报文 字节流 40 33 31 46 41 30 30 30 30 30 3…

[Jetson]在nvidia orin/xavier上快速配置深度学习环境(Tensorflow,Pytorch都可以参考)

本文章将介绍如何通过docker在边缘计算设备nvidia orin/xavier上快速配置深度学习环境.该方法适用于Tensorflow,Pytorch,但是本文以介绍Tensorflow的安装为主. 文章目录第一步:安装docker第二步:安装nvidia-docker2第三步:拉取tensorflow镜像3.1 确定容器版本3.2 拉取镜像3.3 测…

awk命令应用

记录:353 场景:在CentOS 7.9操作系统上,使用awk文本处理工具处理文本;使用awk、cat和grep搭配使用处理文本;使用awk直接处理文本;使用shell脚本调用awk脚本处理文本。 版本: 操作系统&#x…

基于神经网络彩色图像插值研究-附Matlab程序

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、色彩过滤阵列CFA✳️ 三、BP网络结构✳️ 四、神经网络彩色图像插值实验验证✳️ 五、参考文献✳️ 六、Matlab程序获取与验证✳️ 一、引言 彩色图像插值是通过估算相邻像素来估计缺失的颜色分量的过程,数字相机通过色彩过滤…

若依对SpringSecurity框架的运用

引言:借助ruoyi-vue框架学习其对SpringSecurity框架的运用。若依的前后端分离版本基于SpringSecurity和JWT配合Redis来做用户状态记录. 1 SpringSecurity 1.1 入口 后台接收登录数据,基于用户名和密码封装一个(UsernamePasswordAuthenticationToken)认…

线程安全和synchronized关键字

一,线程安全的引入 1.示例 多线程在多进程的基础上更好解决了并发问题,但由于一个进程内的多个线程是资源共享的,就会出现多个线程在并发执行的时候造成内存中数据的混乱。 举一个例子: class Counter {public int count;publi…

hypervision理解的记录

目录 一、hypervision介绍 Type 1 Hypervisor Type 2 Hypervisor 二、QNX hypervision是TYPE1的虚拟机 三、QNX hypervision架构 1、VMM (虚拟机管理器) 2、virtual-net 3、qnx官网 network 九、其他 一、hypervision介绍 首先,hypervision分为Type1和Type2…

SpringBoot添加外部jar包及打包(亲测有效) - 第452篇

历史文章(文章累计450) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 深入Feign源码吃透Spring扩展点「扩展点…

亿级异构任务调度框架设计与实践

背景 阿里云日志服务作为云原生可观测与分析平台。提供了一站式的数据采集、加工、查询分析、可视化、告警、消费与投递等功能。全面提升用户的研发、运维、运营、安全场景的数字化能力。 日志服务平台作为可观测性平台提供了数据导入、数据加工、聚集加工、告警、智能巡检、…

“200万天价床垫”引发的思考:普通床垫越卖越贵是推测还是事实

定制床垫价格高达200万元?近段时间,一场娱乐圈的闹剧让大家把目光转向了床垫市场。在天价床垫的话题下,除了大部分猜测床垫品牌的讨论以外,也有不少人认为指出了“社会现状”:健康品质化的消费追求正在让市面上的床垫价…

Python_数据容器_字典

一、字典(映射)的定义 生活中的字典: 【字】:【含义】 可以按【字】找出对应的【含义】 Python中的字典: key : value 可以按照[key]找出对应的[value] 1、Python字典使用场景: 通过使用字典&#…

uni-app 之 web-view 与h5 通讯

官网文档:https://uniapp.dcloud.net.cn/component/web-view.html#getenv web-view 是一个 web 浏览器组件,可以用来承载网页的容器,会自动铺满整个页面(nvue 使用需要手动指定宽高)。 各小程序平台,web-v…

图像下采样再上采样维度不匹配

图像在下采样后再上采样,维度会发生不匹配,假设一幅图像的维度为(b,c,h,w),那么当h和w是偶数的时候,下采样和上采样是匹配的,当且仅当他是偶数的时候才匹配,然而图像的h和w往往不一定是偶数。当然有许多种方…

【Shell 脚本速成】06、Shell 数组详解

目录 一、数组介绍 二、数组定义 三、数组赋值方式 四、数组取值 案例演示 五、关联数组 5.1 定义管理数组 5.2 关联数组赋值 5.3 管理数组取值 5.4 综合案例 有这样一个现实问题:一个班级学员信息系统,要求存储学员ID、NAME、SCORE、AGE、GE…

关于订单功能的处理和分析

这两天看了一下RABC的权限管理处理,梳理了一下订单功能的表创建,界面,功能分析。 目录 RABC RBAC0模型 那么对于RABC模型我们怎么创建数据库表? 订单模块的梳理 RABC RABC说的是在用户和权限之间多一个角色,用户与…

软件测试基础

⭐️前言⭐️ 🍉博客主页: 🍁【如风暖阳】🍁 🍉精品Java专栏【JavaSE】、【备战蓝桥】、【JavaEE初阶】、【MySQL】、【数据结构】 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟&…

Spring Cloud OpenFeign - - - >拦截器

源码地址:https://download.csdn.net/download/weixin_42950079/87209379 SpringMVC拦截器 和 OpenFeign拦截器 的区别 初学者很容易将 Spring MVC 拦截器 和 Spring Cloud OpenFeign 拦截器搞混,误以为OpenFeign拦截器就是SpringMVC拦截器: …

虹科分享 | 麦氏比浊仪在药敏试验中的应用

细菌是重要的病原微生物,人类针对不同的病原菌研发了各类抗菌药,这些药物对细菌性疾病的治疗与控制起到了关键作用。然而随着新型致病菌的不断出现,加上细菌在药物使用过程中逐渐产生了耐药性,抗菌药的防治效果越来越差。病原菌对…

Python 中的类与继承

类的定义以及实例的建立 Python中,类通过 class 关键字定义。 例如最简单的一个类定义可以为: class Person(object):pass Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的。…