连接到 QEMU 的 GDB 断点问题

连接到 QEMU 的 GDB 断点问题

我遇到了以下问题:当我将 gdb 连接到 qemu 进行调试时,它不会在断点处中断。我可以设置断点,使用ctrl+c等中断。

有什么线索可以解决这个问题吗?

我有:

$ qemu --version
QEMU PC emulator version 0.11.0 (qemu-kvm-0.11.0), Copyright (c) 2003-2008 Fabrice Bellard
$ gdb --version
GNU gdb (GDB) 7.0-ubuntu. This GDB was configured as "x86_64-linux-gnu".

这是一个示例会话:(是的,这是 pintos)

gdb -x src/misc/gdb-macros kernel.o
GNU gdb (GDB) 7.0-ubuntu
Copyright (snip...)
License (snip...)
This GDB was configured as "x86_64-linux-gnu".
Reading symbols from ../../threads/build/kernel.o...done.
(gdb) debugpintos
0x0000fff0 in ?? ()
(gdb) break main
Breakpoint 1 at 0xc01000b6: file ../../threads/init.c, line 68.
(gdb) info break
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0xc01000b6 in main at ../../threads/init.c:68
(gdb) cont
Continuing.
Remote connection closed

欢迎任何想法。

答案1

我在使用 linux kernel 2.6.25.20 时遇到了类似的问题,我尝试在 start_kernel 上断点,然后 panic,但是没有成功,但如果我运行它,然后快速按 ctrl-c gdb,那么我就可以在断点处成功断点,它神奇地成功了。我不知道为什么……也许是节条目问题。或者也许是 qemu 版本问题……无论如何。但它目前有效……

答案2

我已经升级到版本:

$ qemu --version
QEMU PC emulator version 0.12.50, Copyright (c) 2003-2008 Fabrice Bellard

现在它对我来说工作正常。

相关内容