【发布时间】:2017-08-05 03:37:26
【问题描述】:
我想知道如何使用 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”时。它会打印一些奇怪的消息。像这样
(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”时。它将显示“程序未运行。”。我被这个问题困扰了好几天。任何人都可以帮我修复它并让程序运行。非常感谢。
【问题讨论】:
-
这个问题有一个类似的错误报告:sourceware.org/bugzilla/show_bug.cgi?id=13984。您可以尝试应用附加到错误报告的补丁并重建 gdb。
-
非常感谢。它对我有用!
标签: debugging linux-kernel gdb qemu