我从开发者的网站安装了一个应用程序但它崩溃了。
我尝试使用这种形式的 apport-retrace 来获取一份可以亲自通过电子邮件发送给开发人员的报告:
apport-retrace --confirm --gdb --sandbox system --verbose --cache /my/path/cache/apport-retrace --output /mypath/apport-retrace/appname.1000.crash /var/crash/_usr_bin_appname.1000.crash
错误是:
错误:报告文件不包含必需字段之一:CoreDump DistroRelease Package ExecutablePath
我检查了崩溃文件,发现缺少的字段是“Package”。但是,该应用程序并非来自 Debian 软件包。有没有办法让 apport-retrace 忽略此字段并生成最佳报告?
编辑:我并不是想向 Ubuntu 报告这个错误。我也不想向任何错误跟踪器提交错误报告。我的目标是自己阅读崩溃报告。这真的是我唯一的目标。一旦我阅读了这种特殊情况下的崩溃报告,我就会给开发人员发送电子邮件。但总的来说,我想要一个可以让我阅读由 Ubuntu 上安装的标准工具生成的崩溃报告的工具。
谢谢。
答案1
这不是原始提问者的答案。他已经知道,如果你知道包名,你可以简单地添加它,参见
在我的 /var/crash 目录中,我发现了一个 _usr_bin_gconftool-2.0.crash 崩溃文件,并想通过以下方法了解更多详细信息:
apport-retrace -g _usr_bin_gconftool-2.0.crash
我收到错误信息:
ERROR: report file does not contain one of the required fields: CoreDump DistroRelease Package ExecutablePath
由于在网上搜索时我注意到了这个问题,所以长时间的讨论让我很困惑,导致我无法找到简单的解决方案。
只需添加
Package: gconftool-2
在文件开头允许我获得:
...
Core was generated by `gconftool-2 --get /desktop/gnome/interface/accessibility'.
Program terminated with signal SIGABRT, Aborted.
#0 0x00007f5032236428 in __GI_raise (sig=sig@entry=6)
at ../sysdeps/unix/sysv/linux/raise.c:54
54 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
请不要仅仅因为这个答案与原始问题无关而否定这个答案。这专门针对那些遇到“正常”问题的人,即标准软件包的崩溃转储中缺少软件包名称。
答案2
Apport 仅适用于从官方 Ubuntu 存储库安装的软件包。如果开发人员发现任何错误,您应该在开发人员错误跟踪器中报告该错误,并告知他们如何重现该错误。
我并不是想向 Ubuntu 报告这个错误。我也不想向任何错误跟踪器提交错误报告。我的目标是自己阅读崩溃报告。这真的是我唯一的目标。一旦我阅读了这种特殊情况下的崩溃报告,我就会给开发人员发送电子邮件。但总的来说,我想要一个可以让我阅读由 Ubuntu 上安装的标准工具生成的崩溃报告的工具。
同样,如果程序不在存储库中,Ubuntu 将不会生成任何崩溃报告。查看它们的唯一方法是使用终端、ftrace、gdb 等。对于二进制文件(C/C++ 等),您应该将调试器附加到程序中;对于解释器(Python、Perl 等),您应该读取跟踪错误。如果二进制文件不是来自存储库,apport 将忽略任何崩溃。但是,只要程序来自存储库或您自己构建,Ubuntu 就会提醒您程序崩溃了。