Dieser Abschnitt bietet ein kurzes Glossar der zur Kompilierzeit verfügbaren Kernel-Optionen, die die Fehlersuche unterstützen:
options KDB
: Kompiliert das
Kernel-Debugger-Framework ein. Wird von options
DDB
und options GDB
benötigt. Kein oder nur geringer Leistungs-Overhead.
Standardmäßig wird bei einer Panic der Debugger
gestartet, anstatt automatisch neu zu starten.
options KDB_UNATTENDED
: Setzt den
Standard des
debug.debugger_on_panic
-sysctl-Werts auf
0, welcher regelt, ob der Debugger bei einer Panic gestartet
wird. Solange options KDB
nicht in den
Kernel einkompiliert ist, wird bei einer Panic automatisch
neu gestartet; sobald es in den Kernel einkompiliert ist,
wird standardmäßig der Debugger gestartet,
solange options KDB_UNATTENDED
nicht
einkompiliert ist. Falls Sie den Kernel-Debugger in den
Kernel einkompiliert lassen wollen, aber möchten, dass
das System neu startet, wenn Sie nicht zur Stelle sind, um
den Debugger zur Diagnose zu benutzen, wählen Sie diese
Option.
options KDB_TRACE
: Setzt den Standard
des debug.trace_on_panic
-sysctl-Werts auf
1, welcher regelt, ob der Debugger bei einer Panic
automatisch eine Stack-Ablaufverfolgung ausgibt. Besonders
wenn der Kernel mit KDB_UNATTENDED
läuft, kann dies hilfreich sein, um grundlegende
Informationen zur Fehlersuche auf der seriellen oder
Firewire-Konsole zu erhalten, während immer noch zur
Wiederherstellung neu gestartet wird.
options DDB
: Kompiliert die
Unterstützung für den Konsolen-Debugger DDB ein.
Dieser interaktive Debugger läuft auf was auch immer
die aktive Konsole des Systems auf niedrigster Ebene ist,
dazu gehören die Video-, serielle und Firewire-Konsole.
Er bietet grundlegende, eingebaute Möglichkeiten zur
Fehlersuche wie zum Beispiel das Erstellen von
Stack-Ablaufverfolgungen, das Auflisten von Prozessen und
Threads, das Ablegen des Lock-, VM- und Dateisystemstatus
und die Verwaltung des Kernel-Speichers. DDB benötigt
keine Software, die auf einem zweiten System läuft,
oder die Fähigkeit, einen Kernspeicherauszug oder
Kernel-Symbole zur vollen Fehlersuche zu erzeugen und bietet
detaillierte Fehlerdiagnose des Kernels zur Laufzeit. Viele
Fehler können allein unter Benutzung der DDB-Ausgabe
untersucht werden. Diese Option hängt von
options KDB
ab.
options GDB
: Kompiliert die
Unterstützung für den Debugger GDB ein, welcher
von einem entfernten System aus über ein serielles
Kabel oder Firewire agieren kann. Wenn der Debugger
gestartet ist, kann GDB dazu verwendet werden, um
Struktur-Inhalte einzusehen, Stack-Ablaufverfolgungen zu
erzeugen, usw. Bei manchem Kernel-Status ist der Zugriff
ungeschickter als mit DDB, welcher dazu in der Lage ist,
nützliche Zusammenfassungen des Kernel-Status
automatisch zu erstellen wie zum Beispiel das automatische
Abgehen der Lock-Fehlersuche oder der Strukturen zur
Kernel-Speicher-Verwaltung, und es wird ein zweites System
benötigt. Auf der anderen Seite verbindet GDB
Informationen aus den Kernel-Quellen mit vollständigen
Symbolen zur Fehlersuche, erkennt komplette
Datenstrukturdefinitionen, lokale Variablen und ist in
Skripten einsetzbar. Diese Option hängt von
options KDB
ab, ist aber nicht zur
Benutzung von GDB auf einem Kernel-Kernspeicherauszug
nötig.
options BREAK_TO_DEBUGGER
,
options ALT_BREAK_TO_DEBUGGER
: Erlaubt
ein Abbruch- oder Alternativ-Signal auf der Konsole, um in
den Debugger zu gelangen. Falls sich das System ohne eine
Panic aufhängt, ist dies ein nützlicher Weg, um
den Debugger zu erreichen. Aufgrund der aktuellen
Verriegelung durch den Kernel ist ein Abbruch-Signal, das
auf einer seriellen Konsole erzeugt wurde, deutlich
vertrauenswürdiger beim Gelangen in den Debugger und
wird allgemein empfohlen. Diese Option hat kaum oder keine
Auswirkung auf den Durchsatz.
options INVARIANTS
: Kompiliert eine
große Anzahl an Aussageprüfungen und -tests
(Assertion-Checks und -Tests) ein, welche ständig die
Intaktheit der Kernel-Datenstrukturen und die Invarianten
der Kernel-Algorithmen prüfen. Diese Tests können
aufwendig sein und sind deswegen nicht von Anfang an
einkompiliert, aber helfen nützliches "fail
stop"-Verhalten, wobei bestimmte Gruppen nicht
erwünschten Verhaltens den Debugger öffnen, bevor
Beschädigungen an Kernel-Daten auftreten,
bereitzustellen, welches es einfacher macht, diese auf
Fehler hin zu untersuchen. Die Tests beinhalten Säubern
von Speicher und use-after-free-Prüfungen, was eine der
bedeutenderen Quellen von Overhead ist. Diese Option
hängt von options INVARIANT_SUPPORT
ab.
options INVARIANT_SUPPORT
: Viele der
in options INVARIANTS
vorhandenen Tests
benötigen veränderte Datenstrukturen und
zusätzliche Kernel-Symbole, die festgelegt werden
müssen.
options WITNESS
: Diese Option
aktiviert Verfolgung und Prüfung von Lock-Anforderungen
zur Laufzeit und ist als Werkzeug für die
Deadlock-Diagnose von unschätzbarem Wert. WITNESS
pflegt ein Diagramm mit erworbenen Lock-Anträgen nach
Typ geordnet und prüft bei jedem Erwerb nach Zyklen
(implizit oder explizit). Falls ein Zyklus entdeckt wird,
werden eine Warnung und eine Stack-Ablaufverfolgung erzeugt
und als Hinweis, dass ein möglicher Deadlock gefunden
wurde, auf der Konsole ausgegeben. WITNESS wird
benötigt, um die DDB-Befehle show
locks
, show witness
und
show alllocks
benutzen zu können.
Diese Debug-Option hat einen bedeutenden Leistung-Overhead,
welcher ein ein wenig durch Benutzung von options
WITNESS_SKIPSPIN
gemildert werden kann.
Detaillierte Dokumentation kann in witness(4) gefunden
werden.
options WITNESS_SKIPSPIN
: Deaktiviert
die Prüfung von Spinlock-Lock-Anforderungen mit WITNESS
zur Laufzeit. Da Spinlocks am häufigsten im Scheduler
angefordert werden und Scheduler-Ereignisse oft auftreten,
kann diese Option Systeme, die mit WITNESS laufen, merklich
beschleunigen. Diese Option hängt von options
WITNESS
ab.
options WITNESS_KDB
: Setzt den
Standard des
debug.witness.kdb
-sysctl-Werts auf 1, was
bewirkt, dass WITNESS den Debugger aufruft, sobald eine
Lock-Anforderungsverletzung vorliegt, anstatt einfach nur
eine Warnung auszugeben. Diese Option hängt von
options WITNESS
ab.
options SOCKBUF_DEBUG
: Führt
umfassende Beschaffenheitsprüfungen in Socket-Puffern
durch, was nützlich zur Fehlersuche bei Socket-Fehlern
und Anzeichen für Ressourceblockaden (Race) in
Protokollen und Gerätetreibern, die mit Sockets
arbeiten, sein kann. Diese Option hat bedeutende Auswirkung
auf die Netzwerkleistung und kann die Zeitverhältnisse
bei gegenseitiger Ressourceblockade in Gerätetreibern
ändern.
options DEBUG_VFS_LOCKS
: Verfolgt
Lock-Anforderungs-Einzelheiten bei lockmgr/vnode-Locks, was
die Menge der Informationen, die von show
lockdevnods
in DDB angezeigt werden,
vergrößert. Diese Option hat messbare Auswirkung
auf die Leistung.
options DEBUG_MEMGUARD
: Ein Ersatz
für die Kernel-Speicher-Zuweisung durch malloc(9),
die das VM-System benutzt, um Lese- und Schreibzugriffe auf
zugewiesenen Speicher nach der Freigabe zu entdecken.
Details können in memguard(9) gefunden werden.
Diese Option hat bedeutende Auswirkung auf die Leistung,
aber kann sehr nützlich bei der Fehlersuche sein, wenn
Kernel-Speicher-Beschädigungen durch Fehler verursacht
werden.
options DIAGNOSTIC
: Aktiviert
zusätzliche, aufwendigere Diagnosetests analog zu
options INVARIANTS
.
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>.