10.4. Post-Mortem-Auswertung eines Speicherauszugs

Was machen Sie, falls ein Kernel abstürzt und einen Kernspeicherauszug ablegt, aber Sie es nicht erwartet haben und der Kernel folglich nicht unter Benutzung von config -g kompiliert wurde? Nicht alles ist dann verloren. Geraten Sie nicht in Panik!

Natürlich müssen Sie immer noch die Ablage von Speicherauszügen nach einem Absturz aktivieren. Sehen Sie weiter oben nach den Optionen, die Sie festlegen müssen, um dies zu tun.

Wechseln Sie in Ihr Kernel-Konfigurationsverzeichnis (/usr/src/sys/arch/conf) und bearbeiten Sie die Konfigurationsdatei. Entfernen Sie den Kommentar vor folgender Zeile (oder fügen Sie sie hinzu, falls sie nicht vorhanden ist):

makeoptions    DEBUG=-g                #Build kernel with gdb(1) debug symbols

Bauen Sie den Kernel neu. Aufgrund der Änderung des Zeitstempels im Makefile werden einige weitere Objektdateien neu gebaut, zum Beispiel trap.o. Mit etwas Glück ändert die hinzugefügte -g-Option nichts am erzeugten Code, sodass Sie schließlich einen neuen Kernel mit gleichem Code wie im fehlerbehafteten, jedoch mit einigen Symbolen zur Fehlersuche (Debugging-Symbols), erhalten. Sie sollten zumindest die alten und neuen Dateigrößen mit dem size(1)-Befehl überprüfen. Falls sich eine Nichtübereinstimmung findet, müssen Sie an dieser Stelle vermutlich aufgeben.

Untersuchen Sie nun den Speicherauszug, wie oben beschrieben. Die Symbole zur Fehlersuche könnten an manchen Stellen unvollständig sein, wie es die Stack-Ablaufverfolgung im Beispiel oben zeigt, wo manche Funktionen ohne Zeilennummer und Parameterliste aufgelistet sind. Falls Sie mehr Symbole zur Fehlersuche benötigen, entfernen Sie geeignete Objektdateien, bauen Sie den Kernel ein weiteres Mal neu und wiederholen Sie die gdb -k-Sitzung, bis Sie genug wissen.

Das Ganze funktioniert nicht unter Garantie, reicht aber in den meisten Fällen aus.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.