当前位置: 首页 > news >正文

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/*

相关文章:

  • python线程相关讲解
  • 从0到1:Python项目部署与运维全攻略(10/10)
  • Flowbite 和 daisyUI 那个好用?
  • 数字化转型- 数字化转型路线和推进
  • 【四川省专升本计算机基础】第二章 计算机软硬件基础(2)
  • USRP 射频信号 采集 回放 系统
  • Python基础学习-Day27
  • 【Changer解码头详解及融入neck层数据的实验设计】
  • C#与KepOPC通讯
  • 手动实现 Transformer 模型
  • LeetCode --- 156双周赛
  • ubuntu 24.04安装ros1 noetic
  • 2022河南CCPC(前四题)
  • js中不同循环的使用以及结束循环方法
  • Spring Boot 中 MyBatis 与 Spring Data JPA 的对比介绍
  • NHANES指标推荐:FMI
  • 介词有感2
  • 数据库故障排查指南:从紧急响应到根因分析【DeepSeek创作】
  • Ulyssess Ring Attention
  • Android同屏采集并推送RTMP和启动轻量级RTSP服务技术实践
  • 蔡建忠已任昆山市副市长、市公安局局长
  • 新城市志|GDP万亿城市,一季度如何挑大梁
  • 巴基斯坦与印度停火延长至18日
  • 上海市重大工程一季度开局良好,多项生态类项目按计划实施
  • 美国务院批准向土耳其出售导弹及相关部件,价值3.04亿美元
  • 白玉兰奖征片综述丨动画的IP生命力