安装与启动
# 安装abrt图形用户界面
yum install abrt-desktop# 安装abrt客户端
yum -y install abrt-cli# 接收关于 ABRT 检测到的崩溃的电子邮件通知(默认情况下,它会在本地计算机上向 root 用户发送通知。电子邮件目标可以在 /etc/libreport/plugins/mailx.conf 文件中配置)
yum install libreport-plugin-mailx# 使用 Java 语言编写的应用程序中检测异常
yum install abrt-java-connector# 启动abrt服务
service abrtd start# 停止abrt服务
service abrtd stop# 查看abrt服务状态
service abrtd status
配置文件
配置文件路径为/etc/abrt/abrt-action-save-package-data.conf,如果想生成core dump文件,修改内容如下:
# 修改1
"OpenGPGCheck = yes" 修改为 "OpenGPGCheck = no"# 修改2
"ProcessUnpackaged = no" 修改为 "ProcessUnpackaged = yes"
重启abrtd服务
service abrtd restart
abrtd
概述
全称automatically bug report daemon,自动bug报告守护进程,用于监控应用程序崩溃。当程序发生崩溃时,它将收集的崩溃信息,将信息存于**/var/spool/abrt**路径下。如下所示:
[root@localhost abrt]# pwd
/var/spool/abrt
[root@localhost abrt]# ls
ccpp-2023-10-09-19:54:10-16014 last-ccpp oops-2023-02-24-19:47:25-22800-0
文件及目录说明:
- last-ccpp:记录发生崩溃的程序全路径;
- ccpp-*:存放程序崩溃的详细信息;
功能
- 错误收集:ABRT监测系统中的异常情况,并自动收集相关的错误信息;
- 错误报告:ABRT根据收集到的错误信息生成错误报告,并提供给开发人员或系统管理员进行分析和排查;
- 自动通知:ABRT可以配置为在捕获到错误后自动发送通知;
- 插件扩展:ABRT支持插件机制,可以灵活扩展其功能;
命令
- 查看崩溃报告
abrt-cli list
- 删除报告
abrt-cli rm [文件包]
优势
程序崩溃时产生core dump等文件,方便问题排查与定位。
劣势
可能产生大量崩溃报告,占满磁盘空间。
测试
模拟程序
#include <stdio.h>void Func(int *p)
{*p = 6;
}int main()
{int *p = NULL;Func(p);return 0;
}
测试
- 编译并运行程序;
- 进入/var/spool/abrt/ccpp-*目录,通过gdb分析coredump文件;
[root@localhost ccpp-2023-10-09-20:05:52-22585]# gdb --core=./coredump --exec=/mnt/hgfs/test/abrtd-test/debug/testAbrtd -q
[New LWP 22585]
Missing separate debuginfo for the main executable file
Try: yum --enablerepo='*debug*' install /usr/lib/debug/.build-id/d1/20328a67
Core was generated by `./testAbrtd'.
Program terminated with signal 11, Segmentation fault.
#0 0x00000000004006be in ?? ()
(gdb) bt
// ...
(gdb)