软件包维护人员的文档
为您的包收集更多数据
如果程序开发人员(或包维护人员)需要ABRT没有收集的特定信息,他们可以编写一个自定义ABRT钩子来收集程序(包)所需的数据。这种钩子可以在问题处理过程中的不同时间运行,这取决于信息的“新鲜程度”。它可以运行:
在坠机时
当用户决定分析问题时(通常运行
gdb
在上面)报告时
你所要做的就是创建一个 .conf
把它放在 /etc/libreport/events.d/
从此模板:
EVENT=<EVENT_TYPE> [CONDITIONS]
<whatever command you like>
命令将在当前目录设置为问题目录的情况下执行(例如: /var/spool/abrt/ccpp-2012-05-17-14:55:15-31664
)
如果需要在崩溃时收集数据,则需要创建一个将作为 post-create
事件。
WARNING: post-create events are run with root privileges!
这个示例钩子将节省文件的时间 dateofcrash
在ABRT检测到碰撞时:
EVENT=post-create component=binutils
date > dateofcrash
一个更现实的例子:保存 smart
当其中一个工具 udisks
崩溃:
EVENT=post-create component=udisks
which skdump >/dev/null 2>&1 || exit 0
for f in /dev/[sh]d[a-z]; do
test -e "$f" || continue
skdump "$f"
echo
done >smart_data
如果要在报告问题时收集数据,则需要使用 collect_
事件类型。例子::
EVENT=collect_syslog
executable=`cat executable` &&
base_executable=${executable##*/} &&
grep -F -e "$base_executable" /var/log/messages | tail -999 >syslog
测试ABRT如何处理应用程序的崩溃
为了确保abrt能够处理应用程序的崩溃并正确生成回溯,您可以通过发送一个 SIGSEGV 信号(仅在C/C++应用场合):
kill -SIGSEGV $( pidof yourapp )
Abrt应该捕获崩溃并正确地生成一个问题目录。应该可以向ABRT分析公司和bugzilla报告这次事故。
使用自定义bugzilla模板
ABRT允许包维护人员通过为ABRT提供特定于组件的模板文件来覆盖包的默认Bugzilla错误格式。文件的结构必须符合 Bugzilla插件输出配置 必须储存在
/etc/libreport/plugins/bugzilla_format_$component.conf
初始错误格式和/etc/libreport/plugins/bugzilla_formatdup_$component.conf
其他错误注释
模板文件引用上列出的ABRT问题元素 ABRT收集的元素 页。
Bugzilla插件输出配置
Bugzilla reporter插件接受 -F
选项(默认值: /etc/libreport/plugins/bugzilla_format.conf
),它允许用户修改新创建的bug的内容。此文件中的行具有以下格式:
# comment
%summary:: summary format
section:: element1[,element2]...
the literal text line to be added to Bugzilla comment. Can be empty.
摘要格式是一行文本,其中 %element%
替换为文本元素的内容,并且 [[...%element%...]]
块仅在以下情况下使用 %element%
存在。 [[...]]
积木可以筑巢。
截面可以是:
%attach::
要附加的元素的列表。文本,双冒号 (
::
)以及逗号分隔的元素列表。
元素可以是:
目录元素名有问题,格式为
<element_name>: <contents>
或
<element_name>: :<contents> :<contents> :<contents>
前缀为的目录元素名称有问题
%bare_
,按原样格式化,没有<element_name>:
开始冒号%oneline
,%multiline
,%text
通配符,为输出或附件选择所有相应的元素%binary
通配符,仅对%attach
节,指示附加二进制元素前缀为“-”的目录元素名称有问题,它将给定元素从所有通配符中排除
不存在的元素将被忽略。如果不存在任何元素,则不会创建节。
例子:
%summary:: [abrt] %package%[[: %reason%]]
This bug was automatically created by ABRT.
Description of problem:: %bare_comment
Version-Release number of selected component:: %bare_package
Additional info:: \
-analyzer,-count,-duphash,-uuid,-abrt_version,\
-username,-hostname,\
%oneline
Bogosection:: nonexistent_element_name
Backtrace:: %bare_backtrace
%attach:: -comment,-reason,-reported_to,-event_log,%multiline,coredump
请注意,空行是重要的。在上面的例子中,两行之间没有空行 Version-Release number of selected component 和 附加信息 部分,这将导致这两个部分在新创建的bug描述中也没有空行。