Hängt sich auf

Programm-Abstürzen in Linux auf die Spur kommen

Fehlermeldungen: Interpretation und Recherche

Die angezeigten Fehlermeldungen eines Programms, Scripts oder einer Java-Anwendung liefern die wichtigsten Hinweise auf die Problemursache, verlangen aber nach der richtigen Interpretation. Es gibt typische wiederkehrende Fehlerbilder.

Fehlende Bibliotheken: Bei Programmen, die aus Scripts aller Art aufgebaut sind, verursachen fehlende Script-Bibliotheken gerne Abstürze sofort nach dem Start. Gerade Python-und Perl-Scripts mit grafischer Oberfläche bauen meist auf einer größeren Zahl von Bibliotheken (Modulen) auf. Es ist die Aufgabe des Paket-Maintainers einer Distribution oder bei inoffiziellen Paketen die des Entwicklers, die benötigten Komponenten als Abhängigkeiten zu referenzieren, damit der Paketmanager diese automatisch mit installiert. Das gelingt nicht allen Entwicklern, und sogar bei offiziellen Paketen kann es passieren, dass erst noch andere Abhängigkeiten manuell nachinstalliert werden müssen. In diesem Fall wird sich der Script-Interpreter über eine ungültige Methode oder über ein nicht gefundenes Modul beschweren. Ein Merkmal dieser Fehler ist die Reproduzierbarkeit bei jedem Aufruf. Zwar ist das Problem meist recht leicht mit dem Nachrüsten eines Pakets erledigt, jedoch ist der Paketname nicht aus der Fehlermeldung ersichtlich, sondern lediglich der Methoden-oder Modulname. Der erfolgversprechende Lösungsweg ist eine Suche im Web mit dem Wortlaut der Fehlermeldung. Bei großen Distributionen wie Debian, Ubuntu, Mint, Fedora und Arch ist es wahrscheinlich, dass bereits andere Nutzer auf die gleichen Schwierigkeiten gestoßen sind. Am besten ist man mit den Online-Communities beraten, die mit der eingesetzten Linux-Distribution verknüpft sind, wobei die englischsprachigen Sites aufgrund der höheren Zahl der Nutzer mehr Informationen bieten. Ebenfalls eine gute Anlaufstelle sind Frage-Antwort-Foren wie http://unix.stackexchange.com.

Segmentation Fault: Verabschiedet sich ein Programm mit der Meldung „Segfault“, so wurde es nach einem Speicherzugriffsfehler vom Kernel beendet. Der Auslöser kann schlicht ein Bug sein, und in diesem Fall wird sich der Absturz bei jedem Aufruf reproduzieren lassen. Treten Segfault-Meldungen ohne ein festes Muster aus, ist dies jedoch ein Hinweis auf ein Hardware-Problem.

Fehlerhafte Speicherbausteine oder zu heiß gelaufene Prozessoren machen sich ebenfalls in spontanen Segfaults bemerkbar, die dann aber nicht exakt reproduzierbar sind. Um Hardware als Ursache für dieses Fehlerbild auszuschließen, empfiehlt sich der Einsatz des Speichertestprogramms Memtest86+. Sobald Sie Memtest86+ starten, beginnt die Überprüfung der Speicherbausteine.

Lassen Sie die Tests mehrere Durchgänge absolvieren, die unter „Pass“ angegeben sind. Je nach eingebautem Speicher müssen Sie einige Stunden für die Diagnose einplanen. Sie können dann aber sicher sein, dass die Tests ausführlich genug sind, um die meisten Fehler zu finden.

Treiber-und Gerätefehler: Stürzen Programme ab, die bestimmte Merkmale der Hardware nutzen, etwa Open GL für die Grafikausgabe, oder einen Netzwerkchip, dann liefert ein Blick in die Kernel-Meldungen mehr Informationen. Der Befehl

dmesg -T

zeigt alle Meldungen der Kernel-Logfiles mit Zeitstempel an. Hier finden Sie auch Fehlermeldungen und Warnhinweise zu allen Geräten und Treibern. Die Eingabe

dmesg -T -l err

reduziert die Ausgabe auf Fehler, und

dmesg -T -l warn

listet nur Warnhinweise. Zahlreiche normale Meldungen, wie sie der Kernel etwa für die Initialisierung von Geräten protokolliert, werden dann weggefiltert.

(PC-Welt/ad)