エラーを出力せずにアプリケーションがクラッシュした場合、確認できるログはありますか?


17

出力エラーが発生せずに一部のアプリケーションがクラッシュすることがあります(私の場合はconkyで、おそらく私の構成の1つが正しくありません)。

クラッシュした理由を理解するために確認できるエラーログがどこかにありますか?

回答:


14

アプリケーションに依存します。アプリケーションごとにロギングシステムが異なります。システムで実行されるすべてのプログラムからのすべての出力を含む1つの中央ログはありません。

そうは言っても、多くのプログラムはログファイルをディレクトリに保存します/var/log。ファイル/var/log/syslog(または場合によっては/var/log/messages)には、特に、「システムロガー」からの出力が含まれます。システムロガーは、プログラムが(必要に応じて)ロギングに使用できるシステムによって利用可能になるサービスです。しかし、すべてのプログラムがそれを使用するわけではありません。ほとんどの場合、通常使用するグラフィカルアプリケーションではなく、そのファイルに低レベルのシステムサービスからのメッセージがあります。

標準ログファイルの場所について詳しくお読みください。


6

クラッシュファイルは、/var/log/crashes/バグを報告するためにapportで使用するために保存されます。を使用してコアダンプを抽出しapport-unpack、そのコアダンプをgdbに入力して、プログラムがクラッシュする原因を見つけます。

これはすべて、あなたがプログラマーであることを前提としています。そうでない場合は...まあ、とにかくクラッシュを修正することはできません!


1
「これはすべて、あなたがプログラマーであると仮定しています。そうでない場合は...まあ、とにかくクラッシュを修正することはできません!」オープンソースを使用すると、明らかに自分のリスクで問題を解決することができます;)
Strae

@DaNiel:そうでもない!プログラマーではなく、アプリケーションコードを十分に理解していない場合は、バグを犯したコードを混乱させるほど、おそらく得られるでしょう:)
AntonioCS

1
プログラマーでなくても、コアダンプを見ると、問題に関するアイデアが得られることがあります。たとえば、何らかのグラフィックルーチンでクラッシュしているようです。おそらくディスプレイドライバーを更新する必要があります
...-user1242

2
..そして、バグレポート/フォーラムでエラーを説明するのに役立ちます;)
Strae

1
gdbを使用できる非プログラマーを知っていますか?私はプログラマーであり、bt full「ああ、バックトレースを見る...シンボルが欠けている...デバッグシンボルをインストールしてクラッシュを再現する必要があると思う...」まで得ることができます。ブレークポイント...それは私がそれで得た最も先進的なものです。
マコ

3

conkyの場合、にエントリがあることもあります$HOME/.xsession-errors


2

一部のアプリケーションには、-d、-D、-debugなど、デバッグを有効にするために使用できるフラグがあります。アプリケーションのmanページ(man [my-app])、またはそのようなANを持っているかどうかを確認するには、-hフラグでアプリケーションを実行しますオプション。

多くのGUIアプリは$ HOME / .xsession-errorsに書き込むため、出力を確認するのに適した場所です。

apportはおそらく、良いデバッグ情報を取得するための最も確実な方法であるというmacoの権利です。ただし、クラッシュを捕捉できない場合があります。

他のすべてが失敗した場合は、gdbでアプリを実行して、情報を強制的に削除することもできます。次のようになります。

$ gdb my-app

(gdb) run

...クラッシュさせるために必要なことは何でもします...

(gdb) bt full

そしてそこから行きます。

前述のように、gdbルートを使用する場合は、シンボルもインストールする必要があります。手持ちのアドバイスについては、https: //wiki.ubuntu.com/DebuggingProgramCrashを参照してください


間違いなく私にとって最高の答え
Claudix

1

あなたがに行くことができます/var/log/messages or crashes、あなたが実行することができgrep、それらの上でコマンドをし、ファイルを探していることは非常に大きな、時にはを得ることができ、アプリケーションを検索します。アプリケーションに関連する情報が返されます。:)


1

.desktopランチャーファイルからアプリケーションを起動する場合は、.desktopファイルにオプションTerminal=trueを追加します。これにより、プログラムを実行するとターミナルが開きます。ターミナルでの出力は、最初にコマンドラインを介してプログラムを実行した場合に表示されるものに似ています。このようにして、GUIがクラッシュまたはハングしたときに、それまでのテキスト出力を確認できます。


これは何をしますか?私はすでにこのセットを持っていますが、余分なログは記録していません。
マット

私の答えを編集して、あなたの質問に答えようとしました。これは理にかなっていますか?
セラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.