我正在尝试使用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
进行连接。