是否可以与gdbserver建立多个连接?

时间:2016-08-07 14:20:47

标签: eclipse gdb gnu-arm

我正在使用Eclipse CDT和GNU ARM QEMU模拟器。 Eclipse在QEMU上运行的gdb启动它自己的gdbserver会话。我希望能够从OSX终端连接以进行更精细的调整控制。我还希望能够使用Node.js脚本中的GDB / MI来获取有用的数据,如寄存器状态等,并在网页中显示它。

我在使用自己的gdb会话运行QEMU模拟器时可以很好地连接,但我想知道是否可以重新插入Eclipse的gdb,或者与gdbserver建立第二个连接。

谢谢!

来自https://sourceware.org/gdb/onlinedocs/gdb/Server.html(20.3.1.2):

  

当gdbserver保持运行时,gdb可以在以后再次连接到它。这种重新连接对于断开跟踪等功能非常有用。为了完整起见,一次最多可以连接一个gdb。

到目前为止,我无法弄明白,从文档中可以看出这是不可能的。

我现在使用的解决方案是从终端手动运行QEMU模拟器。 GNU ARM Eclipse调试器允许指定gdbserver host:port,我可以指向独立的QEMU工作正常。

为了允许同时进行gdb会话,我可以为Eclipse创建一个自定义TCP服务器来连接,而不是直接连接到gdbserver。此TCP服务器会将所有流量从Eclipse转发到gdbserver,我也可以通过此渠道收听并向gdb发送消息。

最终结果是您可以像往常一样在Eclipse中调试和设置断点,但也可以通过Web界面,本机OSX终端等以任何方式与gdb交互。

1 个答案:

答案 0 :(得分:2)

没有内置方法可以做到这一点。有一个project to implement it,但我不知道它有多活跃。

你有一种代理的想法可能会奏效。我认为,从为多客户端项目提出的方法来看,它并没有太大的不同。如果您只对已经可能通过网络传输的数据感兴趣,另一种类似的方法可能是在某处插入一个发球台并过滤掉有趣的回复。