【发布时间】:2015-02-18 17:20:05
【问题描述】:
我正在使用 GDB 调试远程目标:我启动 GDB,然后键入 target remote foo:1234。我还通过串行端口与目标通信(注意:GDB 不是通过此串行端口连接,而是通过 OpenOCD 通过单独的 JTAG 接口连接)。所以我打开了两个终端:一个使用 Minicom,一个使用 GDB。
当您在 GDB 中调试“正常”劣质时,其 stdin 和 stdout 与 GDB (more info here) 位于同一 TTY 上。
有谁知道是否有可能为远程目标实现这一点 - 即让 GDB 连接到串行端口(以及 GDB 服务器),以便我可以从 GDB 会话中对目标进行 I/O?
【问题讨论】:
-
这可能可能(毕竟所有组件都是开源的,因此可以修改)但是你确定它是可取的吗?对于传统的线模式阻塞终端 I/O,这似乎更有意义 - 如果在应用程序代码中更直接地处理端口,则在嵌入式系统中意义不大。如果您知道您的串行端口访问将通过一个一致的 API,该 API 提供类似终端的一次行功能,那么您可以创建一些集成。一般来说,统一输出可能要简单得多,但同步可能不太好。
-
Chris:假设您只在进程停止时与 GDB 交互,我认为应用程序没有必要只执行行模式 I/O。毕竟不是所有的非嵌入式应用程序都只做线模式 I/O,GDB 应该能够调试这样的系统。不过可能会有一些我没有想到的并发症。
-
我已经进入了 GDB 邮件列表关于这个问题 (sourceware.org/ml/gdb/2015-02/msg00032.html) 并且 GDB 目前似乎没有这样做的设施。我会做一些思考,如果我能找到一个通用的解决方案,我一定会分享它。
标签: linux debugging serial-port gdb embedded