• linux基础64——abrtd总结


    安装与启动

    # 安装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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    配置文件

    配置文件路径为/etc/abrt/abrt-action-save-package-data.conf,如果想生成core dump文件,修改内容如下:

    # 修改1
    "OpenGPGCheck = yes" 修改为 "OpenGPGCheck = no"
    
    # 修改2
    "ProcessUnpackaged = no" 修改为 "ProcessUnpackaged = yes"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    重启abrtd服务

    service abrtd restart 
    
    • 1

    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
    
    • 1
    • 2
    • 3
    • 4

    文件及目录说明:

    • last-ccpp:记录发生崩溃的程序全路径;
    • ccpp-*:存放程序崩溃的详细信息;

    功能

    • 错误收集:ABRT监测系统中的异常情况,并自动收集相关的错误信息;
    • 错误报告:ABRT根据收集到的错误信息生成错误报告,并提供给开发人员或系统管理员进行分析和排查;
    • 自动通知:ABRT可以配置为在捕获到错误后自动发送通知;
    • 插件扩展:ABRT支持插件机制,可以灵活扩展其功能;

    命令

    • 查看崩溃报告
    abrt-cli list
    
    • 1
    • 删除报告
    abrt-cli rm [文件包]
    
    • 1

    优势

    程序崩溃时产生core dump等文件,方便问题排查与定位。

    劣势

    可能产生大量崩溃报告,占满磁盘空间。

    测试

    模拟程序

    #include 
    
    void Func(int *p) 
    {
        *p = 6;
    }
    
    int main() 
    {
        int *p = NULL;
        Func(p);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    测试

    1. 编译并运行程序;
    2. 进入/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) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    【简单介绍下Sass,什么是Sass?】
    图解 ARP协议工作流程
    如何更改文件类型?4个方法,轻松操作!
    Linux系统安装Ruby语言
    C++ | 大小端模式的概念、检测与影响
    源码编译Kdenlive视频编辑器
    Python——与Matlab对应的Python版本
    借助SpotBugs将程序错误扼杀在摇篮中
    vs2015 AdminDeployment.xml
    500G+顶级学术及大厂数据集开放下载,科研学术赛题开发指南
  • 原文地址:https://blog.csdn.net/www_dong/article/details/133690938