apport-retrace 失败并显示错误:报告文件不包含必填字段之一

Mou*_*inX 9 package-management bug-reporting apport

我从开发人员的网站安装了一个应用程序,但它崩溃了。

我尝试使用这种形式的 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
Run Code Online (Sandbox Code Playgroud)

错误是:

错误:报告文件不包含必填字段之一:CoreDump DistroRelease Package ExecutablePath

我检查了崩溃文件,缺少的字段是“包”。但是,该应用程序并非来自 Debian 软件包。有没有办法告诉 apport-retrace 忽略这个字段并生成最好的报告?

编辑:我不是要向 Ubuntu 报告错误。我也不打算向任何错误跟踪器提交错误报告。我的目标是自己阅读崩溃报告。这真的是我唯一的目标。一旦我阅读了这种特殊情况下的崩溃报告,我就会给开发人员发电子邮件。但总的来说,我想要一个工具,让我阅读安装在 Ubuntu 上的标准工具生成的崩溃报告。

谢谢。

Wol*_*ahl 5

这不是 OP 问题的答案。他已经想通了,如果你知道包名,你可以简单地添加它看看

在我的 /var/crash 目录中,我找到了一个 _usr_bin_gconftool-2.0.crash 崩溃文件,并想通过以下方式了解更多详细信息:

 apport-retrace -g _usr_bin_gconftool-2.0.crash
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

ERROR: report file does not contain one of the required fields: CoreDump DistroRelease Package ExecutablePath
Run Code Online (Sandbox Code Playgroud)

由于在网上搜索将我指向这个问题,我对冗长的讨论感到困惑,这些讨论使我从简单的解决方案中分心。

只是添加

Package: gconftool-2
Run Code Online (Sandbox Code Playgroud)

在文件的开头让我得到:

...
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.
Run Code Online (Sandbox Code Playgroud)

请不要仅仅贬低这个答案,因为它不是关于原始问题的。这特别适合那些遇到“正常”问题的人,这些问题是从标准包中进行故障转储,而包名只是缺失。

  • 这正是我的问题,我通过网络搜索找到了这里,而您的解决方案正是目标。其他人可能不同意,但它符合我的需求,所以我投了赞成票。谢谢 (2认同)

Bra*_*iam 0

Apport 仅适用于从官方 Ubuntu 存储库安装的软件包。您应该在开发人员错误跟踪器中报告该错误(如果他们有任何关于如何重现该错误的信息)。

我并不是想向 Ubuntu 报告该错误。我也不想向任何错误跟踪器提交错误报告。我的目标是亲自阅读崩溃报告。这确实是我唯一的目标。一旦我阅读了这种特殊情况下的崩溃报告,我就会向开发人员发送电子邮件。但总的来说,我想要一个可以让我阅读 Ubuntu 上安装的标准工具生成的崩溃报告的工具。

同样,如果程序不在存储库中,Ubuntu 将不会生成任何崩溃报告。查看它们的唯一方法是使用终端、ftrace、gdb 等。如果是二进制文件(C/C++ 等),您应该将调试器附加到程序,或者在解释器(Python、Perl、 ETC。)。如果二进制文件不是来自存储库,则 apport 会忽略任何崩溃。但是,每当程序来自存储库或您自己构建时,Ubuntu 都会提醒您程序崩溃了。

  • 你说,“如果程序不在存储库中,Ubuntu 将不会生成任何崩溃报告。” 你确定吗?实际上,我确实在 /var/crash/_usr_bin_simplescreenrecorder.1000.crash 中看到了崩溃报告文件。我从这里安装了该应用程序:https://github.com/MaartenBaert/ssr。正如你所说,当它崩溃时我会收到警报。但我可以在文本编辑器中读取生成的崩溃报告文件(尽管我猜核心转储是十六进制的)。由于崩溃报告在那里,包括核心转储,我想做`apport-retrace`声称要做的事情:“从包含的核心转储中重新生成堆栈跟踪......”。 (5认同)