In diesem Schritt lernen wir, wie man die Anwesenheit von Debug-Informationen im Nachrichtenpuffer des Kernels überprüft, auf den man mit dem Befehl dmesg
zugreifen kann. dmesg
ist ein Befehlszeilen-Programm, das den Nachrichtenpuffer des Kernels anzeigt. Dieser Puffer enthält verschiedene Nachrichten, die vom Kernel generiert werden, darunter Debug-Informationen, Nachrichten zur Hardwareinitialisierung und Fehlermeldungen.
Zunächst verstehen wir, was Debug-Informationen sind und warum sie wichtig sind. Debug-Informationen sind zusätzliche Daten, die in einem Programm oder Kernel enthalten sind und Entwicklern helfen, Probleme zu diagnostizieren und zu beheben. Dazu gehören beispielsweise Funktionsnamen, Variablennamen und Zeilennummern, die es einfacher machen, die Ausführung des Codes zu verfolgen und die Quelle von Fehlern zu identifizieren.
Um den Nachrichtenpuffer des Kernels anzuzeigen, öffnen Sie Ihr Terminal und geben Sie den folgenden Befehl ein:
dmesg
Dieser Befehl gibt den Inhalt des Nachrichtenpuffers des Kernels in Ihrem Terminal aus. Die Ausgabe kann recht lang sein, daher ist es oft hilfreich, sie an einen Pager wie less
weiterzuleiten:
dmesg | less
Jetzt können Sie mit den Pfeiltasten durch die Nachrichten scrollen. Drücken Sie q
, um less
zu beenden.
Um die Anwesenheit von Debug-Informationen zu überprüfen, suchen wir nach bestimmten Schlüsselwörtern oder Mustern in der dmesg
-Ausgabe. Wenn beispielsweise der Kernel mit aktiviertem Debugging kompiliert wurde, könnten Sie Nachrichten sehen, die Funktionsnamen oder Zeilennummern enthalten.
Suchen wir nach dem Schlüsselwort debug
in der dmesg
-Ausgabe. Geben Sie den folgenden Befehl in Ihrem Terminal ein:
dmesg | grep debug
Dieser Befehl zeigt alle Zeilen in der dmesg
-Ausgabe an, die das Wort debug
enthalten. Wenn das Debugging aktiviert ist, könnten Sie Nachrichten wie diese sehen:
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.15.0-76-generic root=UUID=... ro debug
[ 1.234567] ACPI: Added _OSI(Module Device)
Das Vorhandensein solcher Nachrichten zeigt an, dass ein gewisses Maß an Debugging im Kernel aktiviert ist.
Eine andere Möglichkeit, nach Debug-Informationen zu suchen, ist, nach Nachrichten zu suchen, die sich auf bestimmte Kernelmodule oder Treiber beziehen. Wenn Sie beispielsweise an der Fehlersuche eines bestimmten Netzwerktreibers interessiert sind, können Sie nach Nachrichten suchen, die sich auf diesen Treiber beziehen.
Nehmen wir an, Sie möchten nach Debug-Nachrichten suchen, die sich auf die Netzwerkschnittstelle eth0
beziehen. Sie können den folgenden Befehl verwenden:
dmesg | grep eth0
Dieser Befehl zeigt alle Zeilen in der dmesg
-Ausgabe an, die die Zeichenkette eth0
enthalten. Wenn der Netzwerktreiber Debug-Nachrichten generiert, könnten Sie eine Ausgabe wie diese sehen:
[ 2.345678] eth0: link up, speed 100 Mbps, full duplex
[ 3.456789] eth0: received packet with invalid checksum
Diese Nachrichten können wertvolle Informationen über das Verhalten des Netzwerktreibers liefern und Ihnen helfen, eventuelle Probleme zu beheben.
Durch die Untersuchung der dmesg
-Ausgabe und das Suchen nach bestimmten Schlüsselwörtern oder Mustern können Sie die Anwesenheit von Debug-Informationen überprüfen und Einblicke in das innere Funktionieren des Kernels und seiner Module gewinnen.