![连接到 QEMU 的 GDB 断点问题](https://linux22.com/image/1224082/%E8%BF%9E%E6%8E%A5%E5%88%B0%20QEMU%20%E7%9A%84%20GDB%20%E6%96%AD%E7%82%B9%E9%97%AE%E9%A2%98.png)
我遇到了以下问题:当我将 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
现在它对我来说工作正常。