我正在尝试使用kgdb调试Linux内核。我正在将qemu用作目标计算机。 Ubuntu 12.04是我的主机操作系统。我试过这个命令

cyborg@skynet:~$ qemu-system-arm -M versatilepb -m 128M -kernel zImage -initrd rootfs.img.gz -append "root=/dev/ram rdinit=/bin/sh kgdboc=ttyAMA0,115200 kgdbwait"

它将启动并等待显示



当我尝试使用以下命令在Linux主机上使用gdb进行调试时
cyborg@skynet: arm-none-linux-gnueabi-gdb vmlinux

(gdb):设置remotebaud 115200

(gdb)目标远程/dev/ttyS0
使用/dev/ttyS0进行远程调试
忽略数据包错误,继续...

警告:“qSupported”响应中无法识别的项目“超时”

忽略数据包错误,继续...

忽略数据包错误,继续...

忽略数据包错误,继续...

忽略数据包错误,继续...

偏移查询的响应格式错误,超时



附言我编译了启用KGDB选项的Linux内核2.6.39.4。然后,我按照these的说明在qemu上运行内核。

最佳答案

如果您在主机上引用/dev/ttyS0,那么gdb将尝试使用存在的物理串行端口。您必须将qemu的仿真串行端口连接到gdb
阅读qemu手册,显然,您可以通过将类似的内容添加到ott_code命令行,将仿真端口重定向到tcp网络。然后,您可以在-serial tcp::1234,server中使用qemu进行连接。

07-28 02:45
查看更多