c++ - 如何使用QtCreator远程调试图形应用程序?

标签 c++ qt ssh qt-creator

我开发了一个跨平台的 Qt 应用程序。现在我需要/想要在远程主机上运行它并加载 GUI 表单。
我知道有两种方法可以做到这一点:

  • 在远程显示器(可能是虚拟的)上打开应用程序,控制台通过ssh连接到QtCreator
  • 使用远程 X session 运行,就像使用 ssh -X-Y 完成的那样。

当我通过 QtCreator 在远程设备上运行应用程序时,它会显示

QXcbConnection: Could not connect to display

当我使用 ssh -Y 连接到远程主机并运行我的应用程序时,它显示

QXcbConnection: Could not connect to display localhost:10.0
Aborted

在我的本地主机和通过 VNC 的远程主机上,应用程序运行良好。

ssh -Y user@host xclock 也可以正常工作 - 在我的本地显示器上打开它的表单。

主机系统为Ubuntu 16.04 LTS x64,目标系统为Ubuntu 16.04 LTS x86 32位。 Qt版本5.9.1

请帮助我使其工作。在最坏的情况下,我同意在 QtCreator 中看到调试控制台和附加到 QtCreator 的 gdb,但 GUI 仍然可以放置在远程显示器上。


更新: 这是关于 form.qt.io 的相关问题.

最佳答案

经过一些研究和 QtCreator 社区的帮助,我发现
方法很简单:

  1. 打开与启用了 X 转发的远程主机的 ssh session ssh -X user@host。并了解 DISPLAY 变量。例如使用 echo $DISPLAY。它应该类似于 localhost:10.0
  2. 将 QtCreator -> Projects -> YourConfiguration -> Run -> RunEnvironment 中的环境变量 DISPLAY 设置为 (1) 中的已知值。
  3. 在本地计算机上使用 GUI 运行并享受远程调试。

注意:关闭 ssh session 将使转发的显示无法访问且无效。

关于c++ - 如何使用QtCreator远程调试图形应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47838027/

相关文章:

linux - 在 debian 上创建 Chrooted 用户

mercurial - 如何使用 TortoiseHg 在一台 PC 上使用两个 bitbucket 帐户(带有单独的 ssh key )?

c++ - 结构化绑定(bind)和基于范围的;在 gcc 中抑制未使用的警告

C++重载==比较来自不同类的对象

c++ - 将 C++ 项目与 Qt 项目合并时出现的问题

macos - 升级到 macOS 10.12 (Sierra) 后使用 Capistrano 部署代码时出现问题, “Permission denied (publickey).”

c++ - 如何创建和读取 smime 格式的 pkcs7 签名信封?

c++ - 用32位原子实现64位原子计数器

c++ - 奇怪的光线追踪伪影

c++ - 在 Xcode 中开发 QT 应用程序?