Linux kernel gdb不';t在断点启动时停止\u 32

Linux kernel gdb不';t在断点启动时停止\u 32,linux-kernel,gdb,Linux Kernel,Gdb,使用qemu和gdb调试linux内核引导。这是源分支:。配置为i386_ranchu_defconfig。以下是我使用的步骤: qemu-system-i386 -kernel ~/aosp/goldfish/arch/x86/boot/bzImage -s -S gdb ~/aosp/goldfish/vmlinux (gdb) target remote :1234 0x0000fff0 in ?? () (gdb) b startup_32 Breakpoint 1 at 0xc0200

使用qemu和gdb调试linux内核引导。这是源分支:。配置为i386_ranchu_defconfig。以下是我使用的步骤:

qemu-system-i386 -kernel ~/aosp/goldfish/arch/x86/boot/bzImage -s -S
gdb ~/aosp/goldfish/vmlinux
(gdb) target remote :1234
0x0000fff0 in ?? ()
(gdb) b startup_32
Breakpoint 1 at 0xc0200000: file arch/x86/kernel/head_32.S, line 96.
(gdb) c
Continuing.
但是,程序不会在启动时停止。相反,如果我将startup_32改为startu_kernel,那么它就可以工作了

(gdb) b start_kernel
Breakpoint 1 at 0xc0b3672c: file init/main.c, line 498.
(gdb) c
Continuing.

Breakpoint 1, start_kernel () at init/main.c:498
498 {
(gdb) 

为什么程序在启动时不停止?

启动时\u 32是引导代码的一部分,虚拟内存尚未设置,因此尝试在0xc0200000(虚拟内存地址)处中断可能会锁定系统,而内核不会进行该跳转

启动内核OTOH,在虚拟内存初始化后发生