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.
Zurück | Zum Anfang | Weiter |
Fehlersuche in einem Speicherauszug nach einem Absturz mit DDD | Nach oben | Online-Kernel-Fehlersuche mit DDB |
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>.