Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 内核调试-gdb步骤跳出函数_Linux_Gdb_Kernel_Qemu - Fatal编程技术网

Linux 内核调试-gdb步骤跳出函数

Linux 内核调试-gdb步骤跳出函数,linux,gdb,kernel,qemu,Linux,Gdb,Kernel,Qemu,我正试图了解内核网络堆栈,以便为我的大学进行安全研究。这就是我尝试调试linux内核的原因 到目前为止,我做得很好,但在尝试使用qemu和gdb进行调试时遇到了问题 问题如下: 我引导我的linux系统:makeboot boot: @qemu-system-x86_64 \ -kernel ${KERNEL_IMAGE} \ -drive file=${DRIVE_IMAGE},index=0,media=disk,form

我正试图了解内核网络堆栈,以便为我的大学进行安全研究。这就是我尝试调试linux内核的原因

到目前为止,我做得很好,但在尝试使用qemu和gdb进行调试时遇到了问题

问题如下:

我引导我的linux系统:makeboot

   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连接:makedebug

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
很好,到目前为止一切都按预期进行。 知道我按了n/s(下一步或步骤),而不是net/ipv4/icmp。c:990 它说:

知道我按下n直到我回到icmp_rcv:989。 我试图将断点设置为icmp_rcv_990,但gdb从未停止过。 有人知道怎么解决这个问题吗

谢谢大家!


你的

老实说,我没有胶水,但是从我的Makefile中删除
--enable kvm
有助于让它工作。我希望这能帮助其他人

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