/****************** * 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 Vorwort Design erreichen Zusam...
MySQL kann nicht nur über das Netzwerk, sondern a...
Inhaltsverzeichnis 1. Zeitüberwachung 2. Ereignis...
Inhaltsverzeichnis 1. Tool-Einführung 2. Arbeitsa...
Mit der zunehmenden Anzahl offener Plattformen ver...
Inhaltsverzeichnis Was ist eine Zuordnung? Unters...
Inhaltsverzeichnis 1. Materialien vorbereiten 2. ...
Ich entwickle derzeit ein neues App-Projekt. Dies...
Upgrade-Prozess: Ursprüngliches System: CentOS7.3...
Vorne geschrieben: Manchmal müssen Sie möglicherw...
Inhaltsverzeichnis <Vorlage> <ul Klasse=...
1. Notwendigkeit des Tunings Ich habe mich immer ...
Als ich heute bei der Arbeit war, wurde mir von d...
Die Verwaltung des Speicherplatzes ist für System...
Inhaltsverzeichnis CentOS RPM-Installation und Ko...