如何使用QEMUn和GDB调试内核
问题描述:
我想知道如何使用QEMU和gdb调试Linux内核。我在我的虚拟机中编译了新的内核linux-3.18.6。我的VM环境是centos,内核版本是3.10.0-327.el7.x86_64。我使用命令“qemu-system-x86_64 -kernel /usr/src/linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S”来运行新的内核。然后,我使用另一个shell窗口运行“gdb ./vmlinux”,一切都很好,直到现在。但是,当我继续输入“目标远程本地主机:1234”。它打印一些奇怪的消息。像这样如何使用QEMUn和GDB调试内核
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
Remote 'g' packet reply is too long:
00000000000000000000000000000000000000000000000063060000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000f0ff0000000000000200000000f0000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
000000007f0300000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000801f0000
(gdb) c
The program is not being run.
然后,当我键入'c'。它会显示“程序没有运行”。我好几天一直困惑于这个问题。任何人都可以帮助我解决它并让程序运行。非常感谢。
这个问题有类似的错误报告:https://sourceware.org/bugzilla/show_bug.cgi?id = 13984。您可以尝试应用附加到错误报告的修补程序并重新构建gdb。 – ks1322
非常感谢。这个对我有用 ! – Jerry