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


26

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

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

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


1
ターミナルからExec行を実行するだけで、出力が何を示しているかを確認できますが、デスクトップファイルに問題はありませんか?おそらくターミナルからも確認して実行する必要があります。
ジェイコブVlijm 14年

@Jacob stderrに有用なものを置く「ターミナルから実行する」方法がある場合、それはこの質問に対する答えを構成します。
ケビンリード14年

1
@terdon私はそれを試しましたが、(次の問題として)環境は重要な点で異なっていました。何が違うのか推測できないように、通常の起動プロセスからより多くの情報を取得する方法を知りたいです。
ケビンリード14年

2
@terdon経験的には、ターミナルで実行するのは異なります-私は試しましたが、それは異なっていました(特に異なりますPATH)。通常の起動とまったく同じ環境を取得する方法を知りたいのですが、より多くの診断情報が必要です。
ケビンリード14年

2
少しオフトピックですが、10の9倍の問題が発生するのは、Exec=パス内のスペースなどの特殊文字です。覚えておいてExec=、引用符で囲む必要がありPath=ます。
バラフアルビノ

回答:


15

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

#!/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代わりにこれに使用します。ここを参照すると、どのファイルが読み取られるか、およびどのファイルを何に使用するかについては、こちらを参照してください


この方法では問題を見つけられませんでしたが、ラッパーは機能していたため、ラッパーを実行可能ファイルとして保持しました。
ジャニスエルメリス

16

この質問への答えはここで見つけました:https : //askubuntu.com/a/836842

これを試して :

desktop-file-validate my-app.desktop

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

error: first group is not "Desktrop Entry"

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


7

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

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

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


5
同様の問題があります。私はあなたのコマンドを実行し、my.desktopファイルは完全に動作します。しかし、私はそれをダブルクリックしたとき、それはアプリケーションの起動中にエラーが発生しました示し
Sayantan Koley

(シェルでExecの値を実行する以上のことはないと思いますが)TryExecキーが私の問題であることに気づきました
mirh

3

通常、ターミナル(-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=文字列の後に指定したものを実行するだけです。

通常、端末出力は非常に具体的であり、次のようなバグレポートで役立ちます


2
ターミナルの使用方法と、一般的なプログラム起動のトラブルシューティング方法について知っています。このアプローチを想定して、私が知る必要があるのは、ターミナルで.desktop起動の状態を正確に再現する方法です。
ケビンリード14年


0

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

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

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


「cd〜/ Desktop」の後に<cr>があるはずです
トム

-1

私にとっては、問題はIcon=行の欠落でした(これは、機能するランチャーの愚かな要件のようです)。完全な.desktopファイルは次のようになります。

[Desktop Entry]
Name=LiClipse
Comment=Variant of Eclipse
Exec=/home/tsbertalan/bin/liclipse
Terminal=true
Type=Application
Icon=/home/tsbertalan/usr/liclipse/icon.xpm

これはユーザーの変更に対して特に堅牢ではありませんが、何でもです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.