我正在尝试使用kgdb调试Linux内核。我正在使用qemu作为目标机器。Ubuntu12.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"它将引导并等待显示。
kgdb:等待来自远程gdb的连接
当我尝试在linux主机上使用gdb进行调试时,使用以下命令
cyborg@skynet: arm-none-linux-gnueabi-gdb vmlinux(gdb):设置远程端口115200
(gdb)目标远程/dev/ttyS0远程调试使用/dev/ttyS0忽略数据包错误,继续.
警告:"qSupported“响应中无法识别的项”超时值“
忽略数据包错误,继续.
忽略数据包错误,继续.
忽略数据包错误,继续.
忽略数据包错误,继续.
格式错误的对偏移量查询、超时的响应
,我没有真正得到我所缺少的东西!
在启用KGDB选项的情况下,我编译了linux内核2.6.39.4。我按照这些的指令在qemu上运行内核。
发布于 2012-12-06 22:45:04
如果在主机上引用/dev/ttyS0,gdb将尝试使用当前的物理串口。您必须将qemu的模拟串口连接到gdb。阅读qemu手册,显然可以将模拟端口重定向到tcp网络,方法是将-serial tcp::1234,server添加到qemu命令行。在gdb中,您可以使用target remote :1234进行连接。
发布于 2012-12-07 12:54:03
在Qemu中运行时,没有真正的理由使用kgdb。您可以在Qemu命令行上指定类似于"-gdb tcp::8888“的内容,并激活GDB存根。然后,您可以用一个ARM感知的GDB连接到存根:
target remote:8888然后除错。您可能会发现以下gdb辅助脚本有用
https://stackoverflow.com/questions/13748385
复制相似问题