J'essaie de comprendre la pile réseau du noyau pour une recherche de sécurité pour mon université. C'est pourquoi j'essaie de déboguer le noyau Linux. Jusqu'à présent, je me débrouille plutôt bien, mais j'ai rencontré un problème en essayant d'utiliser qemu et gdb pour le déboguage.Débogage du noyau - l'étape gdb saute de la fonction
Le problème est le suivant:
Je démarre mon système Linux: faire démarrer
boot:
@qemu-system-x86_64 \
-kernel ${KERNEL_IMAGE} \
-drive file=${DRIVE_IMAGE},index=0,media=disk,format=raw \
-append "root=/dev/sda rw console=ttyS0 nokaslr gdbwait" \
-m ${RAM} \
--nographic \
--enable-kvm \
-s
et se connecter avec gdb: make debug
debug:
@gdb -iex "target remote localhost:1234" ${KERNEL_DIRECTORY}/vmlinux
Je mis un point d'arrêt par exemple à icmp_rcv et continuer
b icmp_rcv
Breakpoint 1 at 0xffffffff81808910: file net/ipv4/icmp.c, line 989.
c
sais que je me suis ping -> hit point d'arrêt:
Breakpoint 1, icmp_rcv (skb=0xffff88007c24ee00) at net/ipv4/icmp.c:989
Grande loin tout si a fonctionné comme prévu. sais que je presse n/s (suivant ou étape) et au lieu de net/ipv4/icmp.c: 990 Il dit:
native_apic_mem_write (reg=896, v=52414) at ./arch/x86/include/asm/apic.h:99
sais que je presse n jusqu'à ce que je reviens à icmp_rcv: 989. J'ai essayé de définir un point d'arrêt sur icmp_rcv_990 mais gdb ne s'arrête jamais là. Est-ce que quelqu'un a une idée pour résoudre ce problème?
Merci!
vôtre