Linuxでプログラムがクラッシュする問題を追跡するにはどうすればよいですか?


12

Windowsでアプリケーションがクラッシュした場合は、管理ツールのイベントビューアをチェックして、何がクラッシュしたかを確認できます。時にはそれは他の人が持っていない有用な情報を持っていますが、それは始まりです。
Linuxでは、アプリケーション(いずれか)がクラッシュした場合、何が起こったのかを追跡し始めますか?
たとえば、いくつかの中央ログまたは同様のものはありますか?


2
この種のデバッグの標準的な方法は、問題のあるアプリケーションを端末から手動で起動することです。これにより、出力されたエラーメッセージを確認できます。
terdon

2
Linuxの64ビットバージョンは、クラッシュしたプロセス(シグナルが原因で終了したプロセス)の短い説明をに記録します/var/log/syslog。Linuxは、デーモンにプロセスのクラッシュを通知する方法を提供します。UbuntuのapportとRed Hatのabrtはこれを使用して、ロギングとレポート生成を集中管理する機能を提供します。通常、コアダンプは保存されるため、クラッシュしたプログラムでデバッガーを呼び出すことができます。
Mark Plotnick 2014年

私はこの質問に賛成しましたが、OPは回答を受け入れる、または投稿することでコミュニティを支援したくないようです。そのため、回答を受け入れ、賛成する同様の質問を見つけ、それが賛成されることを期待します。検索結果の上位に上がり、将来の検索者を支援する
Mawgはモニカを2016

回答:


13

たとえば、いくつかの中央ログまたは同様のものはありますか?

システムログの通常の場所は/var/log/です。各ログに記録される内容は、syslog構成によって異なりますが、通常、ログイン以外のすべてがに送信され/var/log/syslogます。

これは、問題が発生した場合に、個々のアプリケーションがそこに手掛かりを残したことを保証するものではありません。しかし、それら、またはシェルは、標準出力/標準エラーストリームに何かを吐き出す可能性が高く、問題のあるアプリケーションをターミナルからフォアグラウンドで実行すると、その内容を見ることができます。


/var/logどのログファイルで何を探す必要がありますか?
ジム

2
クラッシュが発生する可能性がある場合は、そのようにしてから、/ var / logの下のどのファイルが最後に変更されたかを確認します。を使用するls -lartと、リストの最後のファイルが最後に変更されました。
Devon_C_Miller 2014年

慣例があり、S - Linuxははるかに異質の窓を超えています。 Syslogはシステムロガーを指しますが、普遍的な実装はなく、バリエーションはさまざまな方法で構成できます。一般的なロジックでは、メッセージはアプリケーションによってsyslogに送信され、これらのメッセージはさまざまなファイルに分類されます。先に述べたように、通常はすべてがで終わりますが/var/log/syslog、ディストリビューションが異なれば、動作も異なります。使用しているsyslogがわかっている場合は、その構成を調べてこれを判別できます。
ゴルディロックス2014年

6

Ubuntuでは、segfaultはで作成され/var/log/kern.logます。segfaultsするプログラムを作成してテストしました。

void main() {
    int *a=0;
    *a=0;
}

segfaultした後、次の行がありました/var/log/kern.log

a.out[534]: segfault at 0 ip 08048432 sp bfaec8c0 error 6 in a.out[8048000+1000]

1

Ubuntuで、.desktopランチャーファイルからアプリケーションを起動する場合は、.desktopファイルにオプションTerminal=trueを追加します。

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