【发布时间】:2017-11-29 20:05:37
【问题描述】:
我一直在为嵌入式 Linux 目标设置远程调试。我已经测试过我在目标上运行的 gdbserver 和在我的工作站上运行的 gdb 客户端的正确组合。我可以启动服务器并在工作站端运行:
(gdb) 目标远程 10.28.22.226:2345
我可以列出源和步骤就好了。
在 Qt Creator 中,我配置了一个设备。在那个窗口中,我指定了 GDB 服务器可执行文件:gdbserver(见图)。
我还在“构建和运行”调试器选项卡中配置了交叉调试器,如下所示:
在这种情况下,我已经手动启动 gdbserver,并在目标上使用端口 2345 上的可执行文件。要开始使用 Qt Creator 进行调试,我选择 Debug->Start Debugging->Attach to running Debug server 下拉菜单。它给了我如下所示的提示,我在其中输入服务器端口(2345)。我给它适当的工具包和本地可执行文件(远程目标上的可执行文件的副本)。
点击 OK 后,它似乎在本地使用一些命令运行 gdb 客户端,然后尝试与 gdbserver 通信超时。我在服务器上打开了调试日志记录,所以我知道服务器永远不会看到客户端从 Qt Creator 运行的任何内容。另外,我做了 Window->Views->Debugger Log 来帮助我更好地了解发生了什么。该日志显示了我的设备的正确 IP 地址和端口,但我没有看到任何看起来像“目标远程 IP:端口”调用的内容。
我在这里寻找提示或参考。我现在似乎有点卡住了。谢谢!
编辑:附加信息 - 我已经验证我的 gdb 客户端支持编译的 python。我看到 Qt Creator 需要 python 支持。我还有进一步的支持,即 Qt Creator 不会发出任何消息。我进行了一次wireshark 捕获,但没有看到目标端口2345 的任何内容。
或者,如果有人愿意与我分享他们的 Qt Creator 调试器日志输出以便我进行比较,那将很有帮助。
【问题讨论】:
-
这似乎是 4.5 测试版中的一个错误。我运行了 Qt Creator 4.3.1 的副本,并让它工作。在 4.3.1 中,Debug->Start Debugging->Attach to running debug server 出现的对话框有一个“覆盖服务器地址”字段。当我在那里添加我的 IP 地址时,它就可以工作了(没有覆盖它出于某种原因尝试进入 ssh 端口的服务器地址)。我在 QtC 调试器日志中看到了“目标远程 tcp:10.28.22.226:2345”。
-
我在 bugreports.qt.io 创建了 QTCREATORBUG-19392。
-
试过 Qt Creator 4.5RC1 没有这个问题。
标签: gdb qt-creator remote-debugging gdbserver