/****************** * 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
Diese Frage stammt aus einer Nachricht auf Nugget...
Inhaltsverzeichnis Was ist asynchron? Warum brauc...
Datensicherung und Wiederherstellung Teil 2, wie ...
Fehlerseite: Melden Sie sich beim MySQL-Server an...
Inhaltsverzeichnis 1. Grundlegender Überblick übe...
In diesem Artikelbeispiel wird der spezifische Co...
<br /> Der Entwurf einer persönlichen Schrei...
Inhaltsverzeichnis Überblick Statische Typprüfung...
In diesem Artikelbeispiel wird der spezifische Co...
Schritt 1: Holen Sie sich die MySQL YUM-Quelle Ge...
Kaufzertifikat Sie können es beim Cloud Shield Ce...
Neues Projekt starten Dieser Artikel zeichnet hau...
Inhaltsverzeichnis Hörer 1.Uhreneffekt 2.Uhr 1.1 ...
Vorwort: Ganz gleich, ob wir es für den Eigengebr...
In diesem Artikelbeispiel wird der spezifische Co...