Wenn eine Anwendung abstürzt, ohne einen Fehler auszugeben, gibt es ein Protokoll, das ich überprüfen kann?

15

Manchmal kann es vorkommen, dass eine Anwendung abstürzt, ohne dass ein Ausgabefehler auftritt ( in meinem Fall ist conky wahrscheinlich eine falsche Konfiguration von mir).

Gibt es irgendwo ein Fehlerprotokoll, das ich überprüfen kann, um zu verstehen, warum es abgestürzt ist?

Strae
quelle

Antworten:

13

Kommt auf die Anwendung an. Unterschiedliche Anwendungen haben unterschiedliche Protokollierungssysteme. Es gibt kein zentrales Protokoll, das die gesamte Ausgabe aller Programme enthält, die auf Ihrem System ausgeführt werden.

Davon abgesehen stellen viele Programme ihre Protokolldateien in das Verzeichnis /var/log. Die Datei /var/log/syslog(oder vielleicht auch /var/log/messages) enthält insbesondere die Ausgabe des "Systemloggers", eines Dienstes, der vom System bereitgestellt wird und den Programme (falls sie dies wünschen) für die Protokollierung verwenden können. Aber nicht alle Programme verwenden es. Meistens finden Sie in dieser Datei Meldungen von Systemdiensten auf niedriger Ebene, nicht die grafischen Anwendungen, die Sie wahrscheinlich normalerweise verwenden.

Möglicherweise möchten Sie mehr über die Speicherorte von Standardprotokolldateien erfahren .

David Z
quelle
5

Crash - Dateien gehen in /var/log/crashes/für die Verwendung mit Apport zu Fehlern melden. Sie können einen Core-Dump mit extrahieren apport-unpack, diesen Core-Dump in gdb speichern und herausfinden, warum das Programm abstürzt.

Dies setzt voraus, dass Sie ein Programmierer sind. Wenn Sie nicht ... nun, können Sie den Absturz sowieso nicht beheben!

maco
quelle
1
"Das setzt voraus, dass Sie ein Programmierer sind. Wenn Sie nicht ... nun, können Sie den Absturz sowieso nicht beheben!" Mit Open Source können wir alle versuchen, unsere Probleme auf eigenes Risiko zu lösen;)
Straße
@DaNiel: Nicht wirklich! Wenn Sie kein Programmierer sind und den Anwendungscode nicht gut verstehen, werden Sie wahrscheinlich umso mehr mit dem Code herumspielen, mit dem der Buggier zu tun hat :)
AntonioCS
1
Auch wenn Sie kein Programmierer sind, können Sie sich anhand eines Core-Dumps ein Bild über das Problem machen. Zum Beispiel scheint es, als würde es in einer Art
Grafikroutine
2
..und es hilft bei der Beschreibung der Fehler in Fehlerberichten / Foren;)
Strae
1
Kennen Sie Nicht-Programmierer, die GDB verwenden können? Ich bin ein Programmierer und komme so weit wie bt full"Oh, schau mal, ein Backtrace ... mit fehlenden Symbolen ... denke, ich muss Debug-Symbole installieren und versuchen, den Absturz zu reproduzieren ..." Haltepunkt ... das ist der fortschrittlichste, den ich damit bekommen habe.
Maco
3

Für conky könnte es auch sein, dass es Einträge in gibt $HOME/.xsession-errors.

qbi
quelle
2

Einige Anwendungen verfügen über Flags, mit denen das Debuggen aktiviert werden kann, z. B. -d, -D, --debug usw. Überprüfen Sie die Manpage der Anwendung ( man [my-app]), oder führen Sie die App mit dem Flag -h aus , um festzustellen, ob eine solche vorhanden ist Möglichkeit.

Viele GUI-Apps schreiben in $ HOME / .xsession-Fehler, daher ist dies ein guter Ort, um nach Ausgaben zu suchen.

maco hat recht, dass apport wahrscheinlich der sicherste Weg ist, um gute Debug-Informationen zu erhalten. Manchmal wird der Absturz jedoch nicht erfasst.

Wenn alles andere fehlschlägt, können Sie die Informationen auch erzwingen, indem Sie die App in gdb ausführen. Es wäre so etwas wie:

$ gdb my-app

(gdb) run

... alles tun, um es zum Absturz zu bringen ...

(gdb) bt full

und von dort gehen.

Wenn Sie sich für die GDB-Route entscheiden, möchten Sie, wie bereits erwähnt, auch Symbole installieren. Unter https://wiki.ubuntu.com/DebuggingProgramCrash finden Sie Ratschläge zum Handhaben.

Bryce
quelle
Die beste Antwort für mich ohne Zweifel
Claudix
1

Sie können zu gehen, /var/log/messages or crashesdann können Sie den grepBefehl auf diesen ausführen und nach der Anwendung suchen, bei der das Suchen nach den Dateien manchmal ziemlich groß werden kann. Es werden Informationen zurückgegeben, die für Ihre Anwendung relevant sind. :)

myusuf3
quelle
1

Wenn Sie Ihre Anwendung über eine .desktop-Startdatei starten, fügen Sie die Option Terminal=trueIhrer .desktop-Datei hinzu. Dies öffnet ein Terminal, wenn Sie das Programm ausführen. Die Ausgabe auf dem Terminal ähnelt derjenigen, die Sie sehen würden, wenn Sie das Programm zuerst über die Befehlszeile ausgeführt hätten. Auf diese Weise können Sie sehen, welche Textausgabe dazu geführt hat, wenn die GUI abstürzt oder hängt.

Sela
quelle
Was macht das? Ich habe dieses Set bereits und es protokolliert nichts extra.
Matt
Ich habe versucht, Ihre Frage zu beantworten, indem ich meine Antwort bearbeitet habe. Ist das sinnvoll?
Selah