第 25 章 自动错误报告工具(ABRT)
25.1. ABRT 介绍
自动错误报告工具 通常简写为 ABRT,它旨在帮助用户检测和报告应用程序崩溃。主要目的是简化报告问题和查找解决方案的过程。在这种情况下,解决方案可以是 Bugzilla ticket、知识库文章或建议将软件包更新至包含修复的版本。
ABRT 由 Abrtd
守护进程和用于处理、分析和报告检测到的问题的一系列系统服务和实用程序组成。守护进程大部分时间都在后台运行,并在检测到应用程序崩溃或内核 oops 时进行操作。然后守护进程会收集相关问题数据,例如,如果存在核心文件,则崩溃应用命令行参数和其他取证工具数据。
ABRT 目前支持检测以 C、C++、Java、Python 和 Ruby 编程语言编写的应用程序,以及 X.Org 崩溃、内核oopses 和内核 panic。如需有关支持故障类型和崩溃类型的更多详细信息,以及检测到各种崩溃类型的详情,请参阅 第 25.4 节 “检测软件问题”。
可将识别的问题报告给远程问题跟踪器,报告可以在检测到问题时自动执行。问题数据也可以存储在本地或专用系统上,并由用户手动检查、报告和删除。报告工具可将问题数据发送到 Bugzilla 数据库或红帽技术支持(RHTSupport)网站。这些工具也可以使用 FTP
或 SCP
上传,以电子邮件形式发送或将其写入文件。
处理现有问题数据(例如,创建新问题数据)的 ABRT 组件是单独项目 libreport 的一部分。libreport 库提供了一种用于分析和报告问题的通用机制,它也供 ABRT 以外的应用程序使用。但是,ABRT 和 libreport 操作和配置紧密集成。因此,它们在本文档中被作为一个讨论。
请注意,ABRT 报告仅在生成内核转储时才生成。核心转储仅为某些信号生成。例如,SIGKILL(-9)不生成内核转储,因此 ABRT 无法捕获此失败。有关信号和核心转储生成的更多信息,请参阅 man 7 信号。