/****************** * Kernel-Debugging-Technologie ********************/ (1) Einige debuggingbezogene Konfigurationsoptionen im Kernel-Quellcode Die Kernel-Konfigurationsoptionen umfassen einige Optionen zum Kernel-Debugging, die alle im Menü „Kernel-Hacking“ konzentriert sind. enthalten: Stellt zusätzliche Debugoptionen zur Verfügung und sollte aktiviert werden. Es werden dadurch nicht automatisch alle Debugfunktionen aktiviert. Eine detaillierte Beschreibung der Debugoptionen finden Sie im Treiberhandbuch oder in der Hilfebeschreibung von menuconfig. (2) So steuern Sie printk-Debugging-Anweisungen global über Makros Durch die Zusammenarbeit mit Makefile können wir unsere eigenen Debug-Anweisungen in der C-Datei definieren. (3) Einsatz von strace strace kann alle von Programmen im Benutzerbereich ausgegebenen Systemaufrufe verfolgen. Nützliche Parameter sind:
Strace ist sehr nützlich, um subtile Fehler in Systemaufrufen zu entdecken, insbesondere bei Multiprozessprogrammen. Sie können viele nützliche Informationen über den Rückgabewert und die Prozess-PID-Ausgabe von strace erhalten. wie: (4) Einsatz von ltrace ltrace kann alle von User Space-Programmen ausgegebenen Funktionsaufrufe dynamischer Bibliotheken verfolgen. Nützliche Parameter sind:
(5) Überprüfen Sie die Oops-Meldung „Oops“ ist die gebräuchlichste Art des Kernels, den Benutzer darüber zu benachrichtigen, dass etwas Unglückliches passiert ist. Normalerweise bleibt der Kernel nach dem Senden eines Oops in einem instabilen Zustand. In einigen Fällen kann ein Oops einen Kernel-Panic auslösen, der einen Systemabsturz zur Folge hat. Zu diesen Situationen können gehören:
Wenn das Oops auftritt, während ein anderer Prozess ausgeführt wird, beendet der Kernel diesen Prozess und versucht, weiterzulaufen. Es kann viele Gründe für ein Oops-Ereignis geben, beispielsweise einen Speicherzugriff außerhalb der zulässigen Grenzen oder ungültige Anweisungen. Die wichtigsten in Oops enthaltenen Informationen sind der Registerkontext und die Aufrufverfolgung, die Oops künstlich hervorrufen können, beispielsweise: wenn(schlechte_Sache) INSEKT(); //oder BUG_ON(schlechte_Sache); Sie können panic() verwenden, um schwerwiegendere Fehler zu verursachen. Der Aufruf von panic() gibt nicht nur eine Fehlermeldung aus, sondern setzt auch das gesamte System außer Betrieb. Nur in äußerst dringenden Fällen verwenden: wenn(schreckliche_Sache) Panik("foo ist %ld!\n", foo); Manchmal kann es beim Testen hilfreich sein, einfach die Stapelinformationen auszudrucken, z. B. mit dump_stack(): wenn(!debug_check){ printk(KERNEL_DEBUG "einige Informationen bereitstellen\n"); : Der Stapel wird mit dem Stapelspeicher verknüpft. } Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an Das könnte Sie auch interessieren:
|
>>: Mehr als 100 Zeilen Code zur Implementierung von React Drag Hooks
Inhaltsverzeichnis 1. Verwenden Sie die Komponent...
Inhaltsverzeichnis Vorwort Konzept Stabilisierung...
Wenn Sie den Inhalt der Datei „source.list“ verse...
Inhaltsverzeichnis Vorwort Das Prinzip der asynch...
Vor einiger Zeit habe ich Testern eine Produktver...
Rahmenstruktur-Tag <frameset></frameset&...
<br />In Gästebüchern, Foren und anderen Ort...
Inhaltsverzeichnis Vorwort Aufzählbare Eigenschaf...
1. Horizontale Mitte Öffentlicher Code: html: <...
Vorwort Der Quellcode umfasst insgesamt nur mehr ...
selinux ( Security-Enhanced Linux) ist ein Linux-...
Als ich kürzlich für einen Kunden druckte, bat er ...
Inhaltsverzeichnis 1. Benutzerdefinierter Import ...
CSS setzt Overflow so, dass die Bildlaufleiste au...
Wir hoffen, dass wir durch die Einbindung der Wet...