是否可以有多个到 gdbserver 的连接?

vau*_*han 5 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 会话,我可以创建一个自定义 TCP 服务器供 Eclipse 连接,而不是直接连接到gdbserver. 该 TCP 服务器会将所有流量从 Eclipse 转发到gdbserver,并且我还可以通过此通道监听消息并向 gdb 发送消息。

最终结果是您可以像往常一样在 Eclipse 中调试和设置断点,而且还可以以任何您想要的方式与 gdb 交互,例如通过 Web 界面、本机 OSX 终端等。

Tom*_*mey 2

没有内置的方法可以做到这一点。有一个项目来实现它,但我不知道它有多活跃。

您关于拥有某种代理的想法可能会奏效。我认为,这与为多客户端项目提出的方法并没有太大的不同。如果您只对已经可能通过网络传输的数据感兴趣,另一种类似的方法可能是在某处插入 T 恤,然后过滤掉感兴趣的回复。