我尝试在 Ubuntu 14.04.2 - 3.16 内核上使用 KGDB。
Target 在 Ubuntu 14.04.2 上运行 3.16 内核。主机在 Ububtu 14.04.2 上运行 3.16 内核。
目标正在等待远程 gdb 连接。
启动我的主机机器并尝试连接目标..
$ gdb ./vmlinux 目标机器的内核镜像文件。$ gdb> 目标远程 /dev/ttyS0
“qsupported 响应中无法识别的项目超时”。
无法进一步进行。任何人都可以通过这个吗?
我尝试在 Ubuntu 14.04.2 - 3.16 内核上使用 KGDB。
Target 在 Ubuntu 14.04.2 上运行 3.16 内核。主机在 Ububtu 14.04.2 上运行 3.16 内核。
目标正在等待远程 gdb 连接。
启动我的主机机器并尝试连接目标..
$ gdb ./vmlinux 目标机器的内核镜像文件。$ gdb> 目标远程 /dev/ttyS0
“qsupported 响应中无法识别的项目超时”。
无法进一步进行。任何人都可以通过这个吗?
根据我的经验,当调试站(GDB 主机)和目标(SUT)之间的串行连接运行不可靠时,“qsupported response 中无法识别的项目超时”错误消息最常见。通常的解决方案是做两件事。首先,使用 minicom、setserial 和 sty 等程序手动检查串行连接。(检查您的波特率匹配,并且该字符似乎可以在两个系统之间手动传输)。不幸的是,根据我的经验,即使穿插了正确的 RTS/CTS 硬件流控制加密狗,目标上的 KDBG 代理也不能很好地处理流控制。所以手动测试似乎可以工作(手动测试没有真正的流量控制,但它确实证明你在两端都有正确的波特率控制和完全控制)。第二,根据我的经验,通常需要的最佳解决方案是将波特率降低到 9600。(每个人都从 MAX,或 57600,或 34K,或 19200 开始),但将其降至 9600。发送/接收的数据内核调试器很小,甚至串行控制台在调试情况下也不会生成大量数据。通过将波特率锁定为 9600,您可以确保 SUT 串行 kgdboc 保持在目标上,并且您看到的问题通常会消失。如果你发现速度太慢,一旦你让它在 9600 下正常运行,那么你可以一次将速度提高一级(在两端),并为你的设置找到正常工作的最大串行速率。内核调试器发送/接收的数据很小,即使是串行控制台在调试情况下也不会产生很多数据。通过将波特率锁定为 9600,您可以确保 SUT 串行 kgdboc 保持在目标上,并且您看到的问题通常会消失。如果你发现速度太慢,一旦你让它在 9600 下正常运行,那么你可以一次将速度提高一级(在两端),并为你的设置找到正常工作的最大串行速率。内核调试器发送/接收的数据很小,即使是串行控制台在调试情况下也不会产生很多数据。通过将波特率锁定为 9600,您可以确保 SUT 串行 kgdboc 保持在目标上,并且您看到的问题通常会消失。如果你发现速度太慢,一旦你让它在 9600 下正常运行,那么你可以一次将速度提高一级(在两端),并为你的设置找到正常工作的最大串行速率。