web-dev-qa-db-ja.com

「アプリケーションの起動中にエラーが発生しました」を診断するにはどうすればよいですか?

作成したプログラム用にmy-app.desktopファイルを作成しました。ダブルクリックすると、「アプリケーションの起動中にエラーが発生しました」というエラーメッセージが表示されます。問題が何であるかについて、より詳細な情報を取得するにはどうすればよいですか?

ダイアログボックスの「詳細」セクションへの参照を見ましたが、表示されているものにはそのようなものはありません。 Macを使用している場合、コンソールアプリを開いてエラーがログに記録されているかどうかを確認しましたが、Ubuntuで同様のことは何も知りませんでした。

(他の同様のタイトルの質問とは異なり、この特定の.desktopファイルの何が問題なのかを尋ねているわけではないことに注意してください。一般的な検索方法を知りたいです。)

25
Kevin Reid

使用できるトリックを次に示します。アプリケーションを起動し、エラー出力をキャプチャするラッパースクリプトを作成します。

#!/usr/bin/env bash

## Launch 'yourapp' and capture its standard error output
/path/to/yourapp 2>~/myapp.log

それを~/foo.shとして保存し、chmod +x ~/foo.shで実行可能にします。次に、代わりにデスクトップランチャーを指定します。何かのようなもの:

[Desktop Entry]
Version=2.0
Type=Application
Exec=/home/kevin/foo.sh
Terminal=true
Comment=My app!

これにより、すべてのエラーメッセージが~/myapp.logにリダイレクトされ、いつでも確認できます。連続したエラーメッセージを上書きせずにファイルに追加する場合は、2>>~/myapp.logを使用できます。


余談ですが、$PATHが異なる理由は、おそらく$PATHをグラフィカル環境で読み取れない~/.bahsrcに設定しているためです。新しい端末を開くたびに$PATHが設定されるため、これも悪い考えです。これは不必要なオーバーヘッドです。代わりに~/.profileを使用してください。 here を参照したときに読み取られるファイルの詳細と、何に使用するファイルの詳細については、 here を参照してください。

15
terdon

ここでこの質問に対する答えを見つけました: https://askubuntu.com/a/836842

これを試して :

desktop-file-validate my-app.desktop

.desktopファイルにエラーを出力します。たとえば、私のものが返されました:

error: first group is not "Desktrop Entry"

したがって、タイプミスをDesktop Entryに修正すると、スクリプトは正常に実行されました。

14
Jimmy

ターミナルで次のコマンドを実行します。

awk -F= '/Exec=/{system($2)}' your_desktop_file.desktop

.desktopファイル内からExecフィールドに割り当てられたコマンドにエラーがあるかどうかを確認できると確信しています。

7
Radu Rădeanu

通常、ターミナル(-output)は、アプリケーションとデスクトップファイルの両方に関する多くの有用な情報を提供します。例:ターミナルからアプリケーションを実行し、ターミナルでコマンドを入力すると、アプリケーションが起動します。

ただし、何か問題がある場合は、次のような出力が期待できます。

Traceback (most recent call last):
  File "/home/jacob/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa    /qle-2.1.2/code/qle_quicklisteditor", line 4044, in <module>
    MainWindow()
  File "/home/jacob/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa   /qle-2.1.2/code/qle_quicklisteditor", line 51, in __init__
    self.load_sectons()
AttributeError: 'MainWindow' object has no attribute 'load_sectons'
jacob@Jacobwerkkamer:~/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa   /qle-2.1.2/code$ 

エラーの原因となるアプリケーション内の行も含めて、多くの有用な情報が得られます。 (意図的に台無しにしました)

デスクトップファイルと同じように、.desktopファイルのディレクトリでターミナルを開き、ターミナルにドラッグします。たとえば、Exec=行を.desktopファイルから削除すると、ターミナルは実行するコマンドが見つからないことを通知します。

アプリケーションでエラーが発生するかどうかをテストするには、Exec=文字列の後に指定したものを実行するだけです。

通常、端末出力は here のように、バグレポートで非常に具体的で便利です。

3
Jacob Vlijm

本当に理解できないとき、私は:

cd ~/Desktop
ln -s /my/binary/thatIwanttorun mybinary

次に、作成されたデフォルトのアイコンを右クリックして、より良いグラフィックをポイントします。

0
Tom

これは他の人に役立つかもしれません-これは デスクトップランチャーファイルの公式仕様 です

重要なセクションは次のとおりです。認識されたデスクトップエントリキー-必要な値を示します。

0
Tony Suffolk 66