Wenn eine Anwendung unter Windows abstürzt, können wir in der Ereignisanzeige in den Verwaltungstools überprüfen, was abgestürzt ist. Manchmal hat es nützliche Informationen, andere nicht, aber es ist ein Anfang.
Wenn unter Linux eine Anwendung (eine) abstürzt, wie beginnt man zu verfolgen, was passiert ist?
Gibt es zB ein zentrales Protokoll oder ähnliches?
12
/var/log/syslog
. Linux bietet eine Möglichkeit, einen Daemon über Prozessabstürze zu informieren. Ubuntus Apport und Red Hats Abrt verwenden dies, um zentralisierte Protokollierungs- und Berichterstellungsfunktionen bereitzustellen. Im Allgemeinen wird ein Core-Dump gespeichert, damit Sie einen Debugger für das abgestürzte Programm aufrufen können.Antworten:
Der normale Ort für Systemprotokolle ist
/var/log/
. Was in jedes Protokoll eingefügt wird, hängt von der Syslog-Konfiguration ab, aber normalerweise geht alles außer Anmeldungen an/var/log/syslog
.Dies ist keine Garantie dafür, dass einzelne Anwendungen im Falle eines Problems dort Hinweise hinterlassen haben. Aber sie oder die Shell werden wahrscheinlich etwas in die Standard-Out- / Standard-Fehlerströme spucken, und wenn Sie eine problematische Anwendung im Vordergrund von einem Terminal aus ausführen, können Sie dieses Zeug sehen.
quelle
/var/log
? In welcher Protokolldatei gibt es eine Konvention?ls -lart
wurde die letzte Datei in der Liste zuletzt geändert./var/log/syslog
normalerweise alles in , aber verschiedene Distributionen machen die Dinge anders. Wenn Sie wissen, welches Syslog Sie verwenden, können Sie dessen Konfiguration überprüfen, um dies festzustellen.Auf Ubuntu werden Segfaults unter geschrieben
/var/log/kern.log
. Ich habe es getestet, indem ich ein Programm erstellt habe, das Fehler aufweist:Nachdem es fehlerhaft war, gab es diese Zeile in
/var/log/kern.log
:quelle
Wenn Sie in Ubuntu Ihre Anwendung über eine .desktop-Startdatei starten, fügen Sie die Option
Terminal=true
zu Ihrer .desktop-Datei hinzu.quelle