2017-09-06 4 views
0

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

Répondre

0

Honnêtement je n'ai pas de colle pourquoi, mais enlever --enable-kvm de mon Makefile a aidé à le faire fonctionner. J'espère que cela aide les autres.