2017-09-06 10 views
0

大学のセキュリティ研究のためにカーネルネットワークスタックを理解しようとしています。だから私はLinuxカーネルをデバッグしようとしています。カーネルのデバッグ - gdbのステップが関数から外れる

これまではかなりうまくやっていましたが、デバッグにqemuとgdbを使用しようとすると問題が発生しました。

次のような問題がある:

私は私のLinuxシステムをブートします。boot

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 

を作り、GDBとの接続:

debug: 
    @gdb -iex "target remote localhost:1234" ${KERNEL_DIRECTORY}/vmlinux 

をデバッグします、私は、例えばブレークポイントを設定そしてicmp_rcvで

b icmp_rcv 
Breakpoint 1 at 0xffffffff81808910: file net/ipv4/icmp.c, line 989. 
c 

は、私は自分自身をping知っ続ける - >ブレークポイントのヒットは:予想通り

Breakpoint 1, icmp_rcv (skb=0xffff88007c24ee00) at net/ipv4/icmp.c:989 

グレートこれまでのところ、すべてが働きました。 は、I /秒(次またはステップ)、代わりにネット/ IPv4の/ icmp.cのNを押し知っている:990 それは言う:989:

native_apic_mem_write (reg=896, v=52414) at ./arch/x86/include/asm/apic.h:99 

私はicmp_rcvに戻ってくるまで、私は、nを押し知っています。 icmp_rcv_990にブレークポイントを設定しようとしましたが、gdbは決してそこで停止しません。 誰にもこの問題を解決する方法がありますか?

ありがとうございました!

ユアーズ

答えて

0

正直なところ、私は私のMakefileから--enable-kvmを削除すると、それが働いて得るのを助けた理由が、全く糊を持っていません。私はこれが他の人に役立つことを望む。

関連する問題