web-dev-qa-db-ja.com

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

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

12
Jim

ありますか?いくつかの中央ログまたは類似の何か?

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

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

13
goldilocks

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]
6
sashoalm

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

1
Selah