web-dev-qa-db-ja.com

apport-retraceがエラーで失敗する:レポートファイルに必須フィールドの1つが含まれていません

開発者のWebサイトからアプリケーションをインストールしましたが、クラッシュしていました。

このフォームの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

エラーは次のとおりです。

エラー:レポートファイルに必須フィールドの1つが含まれていません:CoreDump DistroRelease Package ExecutablePath

クラッシュファイルをチェックしましたが、不足しているフィールドは「Package」です。ただし、アプリケーションはDebianパッケージからのものではありません。このフィールドを無視して、できる限り最高のレポートを生成するようにapport-retraceに指示する方法はありますか?

編集:Ubuntuにバグを報告しようとはしていません。また、バグレポートをバグトラッカーに送信しようとはしていません。私の目標は、クラッシュレポートを自分で読むことです。それが本当に私の唯一の目標です。この特定のケースでクラッシュレポートを読んだら、開発者にメールを送ります。しかし、一般的には、Ubuntuにインストールされている標準ツールによって生成されたクラッシュレポートを読み取ることができるツールが必要です。

ありがとう。

6
MountainX

これはOPの質問に対する答えではありません。彼は既に、パッケージ名を知っていれば、単に追加できることを理解しました

/ 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

Webを検索するとこの質問が示されたので、簡単な解決策から私をそらす長い議論について混乱しました。

追加するだけ

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.

この回答は元の質問に関するものではないので、この回答にのみ投票しないでください。これは、パッケージ名が単純に欠落している標準パッケージからクラッシュダンプが発生するという「通常の」問題でここに来た人向けです。

3
Wolfgang Fahl

Apportは、公式のUbuntuリポジトリからインストールされたパッケージに対してのみ機能します。バグを再現する方法がある場合は、開発者バグトラッカーでバグを報告する必要があります。

Ubuntuにバグを報告しようとはしていません。また、バグレポートをバグトラッカーに送信しようとはしていません。私の目標は、クラッシュレポートを自分で読むことです。それが本当に私の唯一の目標です。この特定のケースでクラッシュレポートを読んだら、開発者にメールを送ります。しかし、一般的には、Ubuntuにインストールされている標準ツールによって生成されたクラッシュレポートを読み取ることができるツールが必要です。

繰り返しますが、プログラムがリポジトリにない場合、Ubuntuはクラッシュレポートを生成しません。それらを表示する唯一の方法は、ターミナル、ftrace、gdbなどを使用することです。バイナリ(C/C++など)の場合はプログラムにデバッガーを接続するか、インタープリター(Python、Perl、等。)。バイナリがリポジトリから来ていない場合、apportはクラッシュを無視します。しかし、Ubuntuは、リポジトリから来るか自分でビルドするたびにプログラムがクラッシュすることを警告します。

0
Braiam