Linux调试生成核心存储文件

1.核心存储文件配置:

不知道理解对不对,Linux中的核心存储文件的配置是在/proc/sys/kernel/core_pattern中的,使用

cat /proc/sys/kernel/core_pattern
# 打印出
|/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E

表示核心转储会直接通过管道传递给后面的程序(apport),​​而不是生成物理文件。内核会将核心转储数据直接写入 apport 的标准输入(stdin),由 apport 负责后续处理(生成报告、压缩存储等)。

后面接的是参数,参数说明如下:
在这里插入图片描述

2.Apport 的工作流程​​

​​1.触发崩溃​​:程序崩溃(如段错误)时,内核将核心转储数据通过管道发送给 apport。
​​2.生成报告​​:

  • apport 会收集以下信息:
    • 核心转储数据(压缩后存储在报告中)
    • 程序崩溃时的堆栈跟踪
    • 系统日志(如 dmesg 输出)
    • 已安装软件包信息

​​
3.存储报告​​:
报告以 .crash 文件格式存储在 /var/crash/,文件名示例:

_usr_bin_myapp.1000.crash  # 路径中的 `/` 替换为 `_`

3.如何获取核心文件?​​

(1) 从 Apport 报告中提取​​

# 安装工具
sudo apt install apport-retrace
# 解压报告到临时目录
apport-unpack /var/crash/_usr_bin_myapp.1000.crash /tmp/crash-dir
# 核心文件路径
ls /tmp/crash-dir/CoreDump  # 核心文件在此处

​​(2) 临时禁用 Apport​​

# 修改 core_pattern 为生成物理文件
echo "core.%e-%p" | sudo tee /proc/sys/kernel/core_pattern
# 设置核心文件大小无限制
ulimit -c unlimited

(3) 永久生效配置​​

# 编辑 sysctl 配置文件
sudo nano /etc/sysctl.conf# 添加以下内容
kernel.core_pattern = core.%e-%p-%t
kernel.core_uses_pid = 1  # 可选:在文件名末尾附加 PID

应用配置

sudo sysctl -p

​​4. 调试示例​​

# 使用 GDB 分析提取的核心文件
gdb /usr/bin/myapp /tmp/crash-dir/CoreDump
# 查看崩溃堆栈
(gdb) bt full

​​5. 注意事项​​

  • ​​Apport 默认行为​​:
    Ubuntu 仅在 ​​已安装的软件包崩溃时触发弹窗​​,自定义程序崩溃可能不会主动提示。

  • 权限问题​​:
    /var/crash/ 需要 root 权限访问。​​

  • 磁盘空间​​:
    Apport 报告默认会保留在 /var/crash/,需定期清理:

    sudo rm /var/crash/*

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

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

相关文章

Compose笔记(二十三)--多点触控

这一节主要了解一下Compose中多点触控,在Jetpack Compose 中,多点触控处理需要结合Modifier和手势API来实现,一般通过组合 pointerInput、TransformableState 和 TransformModifier 来创建支持缩放、旋转和平移的组件。 一、 API 1. Pointer…

【Java ee初阶】HTTP(4)

构造HTTP请求 1)开发中,前后端交互。浏览器运行的网页中,构造出HTTP请求 2)调试阶段,通过构造HTTP请求测试服务器 朴素的方案: 通过tcp socket 的方式构造HTTP请求 按照HTTP请求格式,往TCP…

STM32 __main

STM32开发中__main与用户main()函数的本质区别及工作机制 在STM32开发中,__main和用户定义的main()函数是启动过程中的两个关键节点,分别承担运行时初始化和用户程序入口的职责。以下是它们的核心差异及协作机制: 一、定义与层级差异 ​__ma…

什么是PMBus

一、PMBus的定义与背景 PMBus(Power Management Bus,电源管理总线) 是一种基于SMBus(System Management Bus)的开放标准数字通信协议,专为电源设备的监控、配置和控制设计。由PMBus联盟(现并入…

Python OOP核心技巧:如何正确选择实例方法、类方法和静态方法

Python方法类型全解析:实例方法、类方法与静态方法的使用场景 一、三种方法的基本区别二、访问能力对比表三、何时使用实例方法使用实例方法的核心场景:具体应用场景:1. 操作实例属性2. 对象间交互3. 实现特定实例的行为 四、何时使用类方法使…

业务中台-典型技术栈选型(微服务、容器编排、分布式数据库、消息队列、服务监控、低代码等)

在企业数字化中台建设中,业务中台是核心支撑平台,旨在通过技术手段将企业核心业务能力抽象、标准化和复用,以快速响应前端业务需求。其核心技术流涉及从业务抽象到服务化、治理和持续优化的全流程。以下是业务中台建设中的核心技术体系及关键…

期望是什么:(无数次的均值,结合概率)21/6=3.5

https://seeing-theory.brown.edu/basic-probability/cn.html 期望是什么:(无数次的均值,结合概率)21/6=3.5 一、期望(数学概念) 在概率论和统计学中,**期望(Expectation)**是一个核心概念,用于描述随机变量的长期平均取值,反映随机变量取值的集中趋势。 (一…

matlab官方免费下载安装超详细教程2025最新matlab安装教程(MATLAB R2024b)

文章目录 准备工作MATLAB R2024b 安装包获取详细安装步骤1. 文件准备2. 启动安装程序3. 配置安装选项4. 选择许可证文件5. 设置安装位置6. 选择组件7. 开始安装8. 完成辅助设置 常见问题解决启动失败问题 结语 准备工作 本教程将帮助你快速掌握MATLAB R2024b的安装技巧&#x…

第3章 自动化测试:从单元测试到硬件在环(HIL)

在前两章中,我们已完成从环境搭建到流水线编译的自动化配置。为了真正保障软件质量、降低回归风险,本章将聚焦测试自动化,涵盖从最基础的单元测试,到集成测试,再到硬件在环(Hardware-in-the-Loop, HIL)测试的全流程。通过脚本驱动、测试报告可视化和与 CI 平台深度集成,…

信息收集+初步漏洞打点

目标:理解信息收集在渗透测试中的意义,熟悉常用工具用法,完成基本打点测试 一.理论学习: 模块内容说明信息收集分类主动信息收集 vs 被动信息收集目标发现子域名、IP、端口、子站点、目录、接口技术指纹识别Web框架(如…

uniapp+vue3开发项目之引入vuex状态管理工具

前言: 我们在vue2的时候常用的状态管理工具就是vuex,vue3开发以后,又多了一个pinia的选项,相对更轻便,但是vuex也用的非常多的,这里简单说下在uni-app中vuex的使用。 实现步骤: 1、安装&#x…

浅谈“量子计算应用:从基础原理到行业破局”

量子计算应用:从基础原理到行业破局 引言:量子计算为何成为科技革命新引擎? 量子计算利用量子力学原理(叠加态、纠缠态、量子干涉)突破经典计算的极限,在特定领域可实现指数级加速。根据中研普华预测,2025年全球量子计算市场规模将突破80亿美元,2035年可达8117亿美元。…

UNiAPP地区选择

<template> <view class"container"> <!-- 左侧地区列表 --> <scroll-view class"left-list" scroll-y :scroll-into-view"currentLetterId" scroll-with-animation scroll"…

嵌入式硬件篇---CAN

文章目录 前言1. CAN协议基础1.1 物理层特性差分信号线终端电阻通信速率总线拓扑 1.2 帧类型1.3 数据帧格式 2. STM32F103RCT6的CAN硬件配置2.1 硬件连接2.2 CubeMX配置启用CAN1模式波特率引脚分配过滤器配置&#xff08;可选&#xff09; 3. HAL库代码实现3.1 CAN初始化3.2 发…

DeepSeek-R1 Supervised finetuning and reinforcement learning (SFT + RL)

DeepSeek-R1Supervised finetuning and reinforcement learning (SFT RL) 好啊&#xff0c;我们今天的直播会非常透彻的跟大家系统性的分享一下整个agents AI就大模型智能体系统和应用程序。我们在做开发的时候&#xff0c;或者实际做企业级的产品落地的时候&#xff0c;你必…

机器学习 day04

文章目录 前言一、线性回归的基本概念二、损失函数三、最小二乘法 前言 通过今天的学习&#xff0c;我掌握了机器学习中的线性回归的相关基本概念&#xff0c;包括损失函数的概念&#xff0c;最小二乘法的理论与算法实现。 一、线性回归的基本概念 要理解什么是线性回归&…

img.dims() <= 2 in function ‘cv::matchTemplate报错

Mat src mat_ori;//imread(img_original);Mat src_template imread(img_template);cvtColor(src, src, COLOR_BGR2RGB);//不转换&#xff0c;matchTemplate将报错cvtColor(src_template, src_template,COLOR_BGR2RGB);//不转换&#xff0c;matchTemplate将报错 error: (-215…

NY321NY322美光闪存芯片NY323NY336

NY321NY322美光闪存芯片NY323NY336 在存储技术飞速发展的今天&#xff0c;美光科技的闪存芯片凭借其创新架构与高性能表现&#xff0c;已成为工业自动化、智能终端等领域的核心组件。本文将围绕技术解析、产品评测、行业趋势、应用案例及市场动态五大维度&#xff0c;深入探讨…

exit耗时高

背景&#xff1a;程序退出发现被强制退出&#xff0c;而不是正常的退出。正常退出是发送15信号&#xff0c;而异常退出是发送信号9&#xff0c;强制退出。退出机制是先发送信号15&#xff0c;然后6s内没有退出完成&#xff0c;会发送信号9。通过查看退出流程&#xff0c;是将初…

docker compose up -d 是一个用于 通过 Docker Compose 在后台启动多容器应用 的命令

docker compose 表示调用 Docker Compose 工具&#xff0c;用于管理基于 YAML 文件定义的多容器应用。 up 核心指令&#xff0c;作用是根据 docker-compose.yml 文件中的配置&#xff0c;创建并启动所有定义的服务、网络、卷等资源。 如果容器未创建&#xff0c;会先构建镜像&…