GDB远程协议:如何分析数据包?

GDB远程协议:如何分析数据包?,gdb,ecos,Gdb,Ecos,我有: 带有eCos操作系统的专有原型ARM板(基于Cortex-M3) 该板具有编程的RedBoot引导加载程序 串行线路(RS-232) ARM的GDB调试器(ARM eabi GDB) 主机操作系统是Windows/Cygwin和/或Linux(实际上,这并不重要) 问题:GDB调试器无法通过串行线连接到目标 我想要的是:嗅探GDB远程协议的数据包,以确定目标上的GDB存根是否处于活动状态且正在运行 详细信息:RedBoot有一个选项,可以将目标的控制权传递给内置GDB存根。我知道Re

我有:

  • 带有eCos操作系统的专有原型ARM板(基于Cortex-M3)
  • 该板具有编程的RedBoot引导加载程序
  • 串行线路(RS-232)
  • ARM的GDB调试器(ARM eabi GDB)
  • 主机操作系统是Windows/Cygwin和/或Linux(实际上,这并不重要)
问题:GDB调试器无法通过串行线连接到目标

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

详细信息:RedBoot有一个选项,可以将目标的控制权传递给内置GDB存根。我知道RedBoot是活动的,我可以连接到它并通过串行线发送命令。表示可以通过键入$or+符号(实际上是GDB远程协议包的前缀)来切换到GDB存根。当我把那些符号发送到终端时,它似乎起作用了。但是我不确定RedBoot是否是用GDB存根支持编译的(不要问我为什么:-)

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

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

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

直觉上我认为可能是这样

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

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

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

执行此操作(在
目标遥控器之前)


对于那些调试仿真器的GDB存根的人,您可能还希望在客户端上设置
set remotetimeout 99999
,同时和平调试仿真器。
set verbose on
(gdb) set debug remote 1