gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 12:24:27 31 4
gpt4 key购买 nike

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

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

问题如下:

我启动我的 linux 系统:make 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: make debug

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它说:

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

知道我按 n 直到我回到 icmp_rcv:989。我试图为 icmp_rcv_990 设置一个断点,但 gdb 永远不会停在那里。有人知道如何解决这个问题吗?

谢谢!

你的

最佳答案

老实说,我不知道为什么,但是从我的 Makefile 中删除 --enable-kvm 有助于让它工作。我希望这对其他人有帮助。

关于linux - 内核调试-gdb步骤跳出函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46069388/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com