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.
mich Tappen auf die Schulter für mit Blick auf den Hinweis auf Haltepunkte verwenden können ... –