QXcbConnection:使用Qt5远程调试程序时,无法连接到显示器

德文
  • PC:Debian 9.4.0,x64,ip 192.168.1.10
  • Qt:基于Qt5.11.0的Qt Creator 4.6.1
  • BeagleBone Black:Debian 9.3.0,armv7,ip 192.168.1.20

我在PC上交叉编译了BeagleBone Black的GUI应用程序,并且可以在BeagleBone上成功执行它。
但是,当我使用F5(菜单:Debug-> Start Debugging)远程调试应用程序时,遇到如下问题。

QXcbConnection:无法连接到显示器

该应用程序在以下行的main()中崩溃:

QApplication a(argc, argv);
  1. 以下是编译和调试时的详细信息:

调试详细信息

Checking available ports...
Found 101 free ports.
Starting gdbserver...
Debugging starts

Listening on port 10001
Remote debugging from host 192.168.1.10
Process /home/debian/gdb/armtest3 created; pid = 13981
Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
Could not load shared library symbols for 25 libraries, e.g. /usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5.
Use the "info sharedlibrary" command to see the complete listing.
Do you need "set solib-search-path" or "set sysroot"?
-----------------armtest3 start------------
QXcbConnection: Could not connect to display

编译输出

09:31:33: Running steps for project armtest3...
09:31:33: Configuration unchanged, skipping qmake step.
09:31:33: Starting: "/usr/bin/make" 
make: Nothing to be done for 'first'.
09:31:33: The process "/usr/bin/make" exited normally.
09:31:33: The remote file system has 218 megabytes of free space, going ahead.
09:31:33: Deploy step finished.
09:31:33: Trying to kill "/home/debian/gdb/armtest3" on remote device...
09:31:37: Remote application killed.
09:31:37: Deploy step finished.
09:31:37: No deployment action necessary. Skipping.
09:31:37: Deploy step finished.
09:31:37: Elapsed time: 00:04.
  1. 以下是我的BeagleBone套件:
    BeagleBone套件配置

  2. main.c

main.c

#include "mainwindow.h"
#include <QApplication>
#include <iostream>
#include <QDateTime>
#include <QDebug>
using namespace std;

int main(int argc, char *argv[])
{
    cout << "-----------------armtest3 start------------" << endl;
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}  

相关问题:QXcbConnection:尝试使用Qt Creator调试Linux应用程序时,无法连接到显示器

Benp44

当您部署应用程序并在设备本身的X11系统中运行它时,您会发现它可以正常工作,因为在这里它可以访问DISPLAY环境变量(简而言之就是告诉它在哪里显示)。此环境变量已在X会话的进程树中进一步设置。

通过调试器启动程序时,Qt Creator将连接到远程设备(通过“工具”>“选项”>“设备”中的设置),并通过ssh运行该程序。在这种情况下,您的程序不再知道在何处显示自身,因为显然它无法在ssh中显示。它在您指示的行上发生故障,因为这是XCB子系统试图确定为此目的连接到哪个X服务器的地方。

因此,回答您的问题:DISPLAY在进行远程调试时,您需要手动提供环境变量。

一种简单的测试方法是进入“项目模式”,找到要用于远程设备的工具包,然后选择“运行”设置。在此下,您应该找到“运行环境”部分。在这里您可以添加一个名为的新变量DISPLAY,并将其值设置为正在运行的显示器的标识符(我想您会想要:0.0,它指示localhost上的第一个可用屏幕,尽管您应该阅读DISPLAY变量,例如,这里这里)。

长期的,可能更好的解决方案是在工具包的设置中设置相同的变量(“工具”>“选项”>“构建和运行”>“工具包”>“环境”)。然后,这将适用于使用此程序创建的将来程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

QXcbConnection:尝试使用Qt Creator调试Linux应用程序时,无法连接到显示器

Wkhtmltopdf(pdfkit)-QXcbConnection:无法连接到显示器

Gnuplot'QXcbConnection:无法连接到显示器'

wkhtmltopdf-QXcbConnection:无法连接到显示器

无法连接到远程调试器

Qt5:无法将信号连接到插槽

Windows 10 Bash“无法连接到显示器!”

调试程序时,UserControl的按钮消失

无法在 WSL bash 中使用 ssh 隧道连接到 X 显示器

从 GAC 远程调试程序集

使用连接到不同图形卡的显示器

使用 sudo 运行应用程序时无法连接到 X 服务器

使用新建的编译器在Eclipse中调试程序

Windows远程桌面-连接到具有多台显示器的PC

是否必须将显示器连接到远程桌面系统?

远程桌面连接到显示器上的同一屏幕?

远程调试:无法连接到远程VM。连接超时

调试-IntelliJ无法连接到远程服务器上启用调试的JVM

调试Service Fabric应用程序时无法连接到诊断事件

在GDB中调试程序时如何获取程序环境

是否可以在执行程序时调试程序?

显示器连接到 Quadro 上的 435 驱动程序不显示任何图像

EC2服务器上的“无法连接到显示器”

无法在Web服务器上启动调试。调试器无法连接到MVC中的远程计算机

无法使用XMPPFramework连接到远程服务器

无法使用 Swift 连接到远程 RabbitMQ 服务器

无法使用Qt应用程序连接到X服务器:0.0

我尝试调试程序时rascal冻结

如何解决“无法连接到远程进程”试图调试应用程序?