bcr 2010-10-02 18:19:15 UTC
FreeBSD German Documentation Repository
Modified files:
books/developers-handbook/kerneldebug chapter.sgml
Log:
MFen 1.79
Zwei überflüssige Abschnitte entfernt, die schon länger nicht mehr
aktuell sind.
Revision Changes Path
1.12 +2 -114 de-docproj/books/developers-handbook/kerneldebug/chapter.sgml
Index: chapter.sgml
===================================================================
RCS file: /home/cvs/de-docproj/books/developers-handbook/kerneldebug/chapter.sgml,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -I$FreeBSDde.*$ -r1.11 -r1.12
--- chapter.sgml 1 Jun 2009 20:44:17 -0000 1.11
+++ chapter.sgml 2 Oct 2010 18:19:15 -0000 1.12
@@ -2,9 +2,9 @@
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
- $FreeBSD: doc/de_DE.ISO8859-1/books/developers-handbook/kerneldebug/chapter.sgml,v 1.1 2009/02/14 22:06:22 miwi Exp $
- $FreeBSDde: de-docproj/books/developers-handbook/kerneldebug/chapter.sgml,v 1.11 2009/06/01 20:44:17 bcr Exp $
- basiert auf: 1.78
+ $FreeBSD: doc/de_DE.ISO8859-1/books/developers-handbook/kerneldebug/chapter.sgml,v 1.2 2009/06/13 20:35:10 bcr Exp $
+ $FreeBSDde: de-docproj/books/developers-handbook/kerneldebug/chapter.sgml,v 1.12 2010/10/02 18:19:15 bcr Exp $
+ basiert auf: 1.79
-->
<chapter id="kerneldebug">
@@ -506,54 +506,7 @@
Schnittstelle von <command>ddd</command> anzugehen.</para>
</sect1>
- <sect1 id="kerneldebug-post-mortem">
- <title>Post-Mortem-Auswertung eines Speicherauszugs</title>
- <para>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 <command>config
- -g</command> kompiliert wurde? Nicht alles ist dann verloren.
- Geraten Sie nicht in Panik!</para>
-
- <para>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.</para>
-
- <para>Wechseln Sie in Ihr Kernel-Konfigurationsverzeichnis
- (<filename>/usr/src/sys/<replaceable>arch</replaceable>/conf</filename>)
- und bearbeiten Sie die Konfigurationsdatei. Entfernen Sie den
- Kommentar vor folgender Zeile (oder fügen Sie sie hinzu,
- falls sie nicht vorhanden ist):</para>
-
- <programlisting>makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols</programlisting>
-
- <para>Bauen Sie den Kernel neu. Aufgrund der Änderung des
- Zeitstempels im Makefile werden einige weitere Objektdateien neu
- gebaut, zum Beispiel <filename>trap.o</filename>. Mit etwas
- Glück ändert die hinzugefügte
- <option>-g</option>-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 &man.size.1;-Befehl
- überprüfen. Falls sich eine Nichtübereinstimmung
- findet, müssen Sie an dieser Stelle vermutlich
- aufgeben.</para>
-
- <para>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
- <command>gdb <option>-k</option></command>-Sitzung, bis Sie
- genug wissen.</para>
-
- <para>Das Ganze funktioniert nicht unter Garantie, reicht aber in
- den meisten Fällen aus.</para>
- </sect1>
<sect1 id="kerneldebug-online-ddb">
<title>Online-Kernel-Fehlersuche mit DDB</title>
@@ -898,71 +851,6 @@
Emacs-Fenster bietet), usw.</para>
</sect1>
- <sect1 id="kerneldebug-kld">
- <title>Fehlersuche bei ladbaren Modulen mit GDB</title>
-
- <para>Während der Fehlersuche bei einer Panic, die innerhalb
- eines Moduls oder unter Benutzung von GDB auf einem entfernten
- System gegen ein System, das dynamische Module benutzt,
- ausgelöst wurde, müssen Sie GDB mitteilen, wie es an
- die Informationen zu den Symbolen dieser Module kommt.</para>
-
- <para>Zuerst müssen Sie die Module mit Informationen zur
- Fehlersuche bauen:</para>
-
- <screen>&prompt.root; <userinput>cd /sys/modules/linux</userinput>
-&prompt.root; <userinput>make clean; make COPTS=-g</userinput></screen>
-
- <para>Falls Sie GDB auf einem entfernten System benutzen,
- können Sie <command>kldstat</command> auf dem Zielsystem
- starten, um herauszufinden, wohin die Module geladen
- wurden:</para>
-
- <screen>&prompt.root; <userinput>kldstat</userinput>
-Id Refs Address Size Name
- 1 4 0xc0100000 1c1678 kernel
- 2 1 0xc0a9e000 6000 linprocfs.ko
- 3 1 0xc0ad7000 2000 warp_saver.ko
- 4 1 0xc0adc000 11000 linux.ko</screen>
-
- <para>Falls Sie einen Speicherauszug nach einem Absturz auf Fehler
- untersuchen, müssen Sie die
- <literal>linker_files</literal>-Liste abgehen, beginnend mit
- <literal>linker_files->tqh_first</literal> und den
- <literal>link.tqe_next</literal>-Zeigern folgend, bis Sie den
- Eintrag mit dem <literal>Dateinamen</literal>, nach dem Sie
- suchen, gefunden haben. Der <literal>Adress</literal>-Teil des
- Eintrags ist die Adresse, wohin das Modul geladen
- wurde.</para>
-
- <para>Als Nächstes müssen Sie den Adressabstand des
- Textabschnitts innerhalb des Moduls herausfinden:</para>
-
- <screen>&prompt.root; <userinput>objdump --section-headers /sys/modules/linux/linux.ko | grep text</userinput>
- 3 .rel.text 000016e0 000038e0 000038e0 000038e0 2**2
- 10 .text 00007f34 000062d0 000062d0 000062d0 2**2</screen>
-
- <para>Das, wonach Sie suchen, ist die
- <literal>.text</literal>-Zeile, Zeile 10 im Beispiel oben. Die
- vierte hexadezimale Spalte (insgesamt die sechste) zeigt den
- Adressabstand des Textabschnitts innerhalb der Datei. Addieren
- Sie diesen Adressabstand zu der Ladeadresse des Moduls, um die
- Verschiebungsadresse für den Code des Moduls zu erhalten.
- In unserem Beispiel erhalten wir 0xc0adc000 + 0x62d0 =
- 0x0ae22d0. Benutzen Sie den
- <command>add-symbol-file</command>-Befehl in GDB, um dem
- Debugger das Modul mitzuteilen:</para>
-
- <screen><prompt>(kgdb)</prompt> <userinput>add-symbol-file /sys/modules/linux/linux.ko 0xc0ae22d0</userinput>
-add symbol table from file "/sys/modules/linux/linux.ko" at text_addr = 0xc0ae22d0?
-(y or n) <userinput>y</userinput>
-Reading symbols from /sys/modules/linux/linux.ko...done.
-<prompt>(kgdb)</prompt></screen>
-
- <para>Sie sollten nun auf alle Symbole im Modul zugreifen
- können.</para>
- </sect1>
-
<sect1 id="kerneldebug-console">
<title>Fehlersuche bei einem Konsolen-Treiber</title>
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-cvs-doc" in the body of the message
Received on Sat 02 Oct 2010 - 20:19:37 CEST