14

我有:

  • 带有 eCos OS 的专有原型 ARM 板(基于 Cortex-M3)
  • 该板具有已编程的 RedBoot 引导加载程序
  • 串行线 (RS-232)
  • ARM 的 GDB 调试器 (arm-eabi-gdb)
  • 主机操作系统是 Windows/Cygwin 和/或 Linux(实际上,没关系)

问题: GDB 调试器无法通过串行线路连接到目标。

我想要的是:嗅探 GDB 远程协议的数据包,以了解目标上的 GDB 存根是否处于活动状态并且正在运行。

详细信息: RedBoot 可以选择将目标的控制权传递给内置的 GDB 存根。我知道 RedBoot 还活着,我可以连接到它并通过串行线路向它发送命令。RedBoot 手册说,可以通过键入 $ 或 + 符号(实际上是 GDB 远程协议数据包的前缀)来切换到 GDB 存根。当我发送这些符号时,它似乎适用于终端死机。但我不确定 RedBoot 是否使用 GDB 存根支持编译(不要问我为什么 :-))。

然后,当我尝试使用我的 GDB 调试器连接到开发板时,我得到以下图片(在 Windows 上):

(gdb) target remote COM3
Remote debugging using COM3
Ignoring packet error, continuing...
Ignoring packet error, continuing...
Ignoring packet error, continuing...
Ignoring packet error, continuing...

端口正确,波特率也正确。实际上,如果我尝试对另一个未连接任何东西的串行端口执行相同的操作,我会得到相同的输出。

我想知道的是 GDB 存根是否发回任何东西?

直觉上我认为可能

set verbose on

会有所帮助,但 GDB 手册说它的效果非常有限,我的情况超出了它。

是否可以使用启用调试日志记录的宏来编译 GDB 调试器?

4

1 回答 1

27

我想知道的是 GDB 存根是否发回任何东西?

这样做(之前target remote):

(gdb) set debug remote 1
于 2012-11-21T18:36:16.770 回答