2016-05-05 11 views
0

Ich frage mich, ob es möglich ist, ein Kernel-Modul zu debuggen, geladen wird.Debug ein Kernel-Modul wird geladen

Hinweis Ich versuche dies derzeit auf Linux 2.0.18. Ich bin diesem großartigen tutorial gefolgt. Da die Kernelkonfigurationsoptionen CONFIG_PROC_KCORE und CONFIG_DEBUG_INFO in dieser Kernelversion nicht verfügbar zu sein scheinen, habe ich -g -gdwarf zu CFLAGS im Makefile hinzugefügt, den Kernel und die Module neu kompiliert und neu gestartet.

Dann kann ich gdb vmlinux /proc/kcore und dann p jiffies ausführen, die mir $1 = 1470917 gibt.

Das ist, wo ich anfangen zu verlieren, auch weil es scheint /sys/module/gdb1/sections auf dieser Kernel-Version, wie es scheint, ein geladenes Modul zu debuggen.

Also habe ich versucht, die Symbole des Moduls „ne“ nur zu laden:

(gdb) symbol-file modules/ne.o

, die die Symbole nach der Bestätigung mit „y“ lädt. Dann habe ich einen Haltepunkt:

(gdb) break ne.c:148 
Breakpoint 1 at 0xa: file ne.c, line 148. 

Nun möchte Ich mag modprobe ne zu tun und den Haltepunkt erreichen, aber ich denke, ich bin völlig auf dem falschen Weg.

Ist das überhaupt möglich? Auch wenn es sich nicht um einen so alten Kernel handelt, wäre ich froh zu wissen, wie man ein Modul debuggt, das auf einem aktuellen Kernel geladen ist.

Antwort

1

Das Dokument, das Sie verknüpfen, gibt an, dass Sie beim Debuggen keine Haltepunkte verwenden können. Andernfalls könnten Sie den Kernel versehentlich blockieren (z. B. was, wenn der Thread, der an einem Breakpoint blockiert, einen Spinlock hat, den der Debugger braucht, um den Thread zu inspizieren?), Auch gibt es keinen stabilen Zustand, da der Kernel weiterlaufen muss.

Ich kann nur spekulieren, warum diese Methode beschrieben wurde. Meine Vermutung ist, dass es vor Jahren keine große Auswahl gab, als nur wenige Leute Hardware zur Unterstützung der Virtualisierung oder mehrere Maschinen zum Debuggen von Fernzugriff hatten.

Der Weg zu gehen ist, etwas wie qemu zu verwenden und an die VM von dem Host anzuhängen. http://wiki.osdev.org/Kernel_Debugging

Auch für post mortem Debuggen Sie https://people.redhat.com/anderson/crash_whitepaper/

+0

mich Tappen auf die Schulter für mit Blick auf den Hinweis auf Haltepunkte verwenden können ... –