【发布时间】:2016-12-13 09:26:49
【问题描述】:
我正在使用 Eclipse CDT 和 GNU ARM QEMU 模拟器。 Eclipse 使用在 QEMU 上运行的 gdbserver 启动它自己的 gdb 会话。我还希望能够从 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 终端等。
【问题讨论】:
-
也许另一个想法是使用类似于 Wallaby.js 所做的编译器步骤来检测代码。