lyz007 2024-06-13 14:33 采纳率: 0%
浏览 51

qtcreator远程调试

qtcreator远程调试飞凌的ok3568开发板时,出现如下错误:
开发板gdbserver 版本为12.1,虚拟机上gbd-multiarch版本为12.1
qtcreator版本为4.7.0


14:11:08: Checking available ports...
14:11:08: Found 101 free ports.
14:11:08: Starting gdbserver...
14:11:08: Debugging starts

Listening on port 10000
Remote debugging from host 192.168.64.78, port 48574
Process /home/untitled/bin/untitled created; pid = 2013
File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
Loadable section "" outside of ELF segments
  in 
Loadable section "" outside of ELF segments
  in 
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
Failed to create wl_display (No such file or directory)
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.

This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: linuxfb, minimal, offscreen, vnc, wayland-egl, wayland.

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-13 14:33
    关注

    引自免费微信小程序:皆我百晓生

    面对你遇到的问题,让我们一起分析并尝试解决。从日志信息来看,主要存在以下几个关键点:

    1. Loadable section "" outside of ELF segments:这通常意味着GDB在解析目标程序时遇到了问题,可能是因为ELF文件格式不匹配或损坏。

    2. XDG_RUNTIME_DIR is invalid or not set in the environment.:这是环境变量未正确设置导致的问题,影响了GDBserver对临时文件的处理。

    3. Failed to create wl_display (No such file or directory):以及后续的Qt平台插件加载失败,这与图形显示环境有关,可能是因为开发板上的图形库或Qt环境配置不当。

    针对这些问题,可以采取以下步骤进行排查和修复:

    步骤 1:检查和修正ELF文件

    确保你的可执行文件是正确的,并且是为你的开发板架构编译的(例如,对于ARM架构)。你可以在本地机器上使用file <your_executable>命令检查可执行文件的类型,确保它与开发板的架构相匹配。

    步骤 2:设置环境变量

    在开发板上启动GDBserver之前,确保设置了XDG_RUNTIME_DIR环境变量。你可以在运行GDBserver的脚本或命令前添加:

    export XDG_RUNTIME_DIR=/run/user/$(id -u)
    

    确保/run/user/$(id -u)目录存在并且有写权限。

    步骤 3:处理图形显示问题

    如果是在没有图形界面的环境中调试,可以尝试使用无头模式(headless mode),禁用Qt的图形输出。在你的项目配置中,将Qt应用程序的main函数改为:

    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);
    app.setOrganizationName("YourOrg");
    app.setApplicationName("YourApp");
    // 禁用图形界面
    QCoreApplication::setApplicationDisplayName("Headless");
    

    或者,如果你的应用程序依赖于图形界面,确保在开发板上安装了所有必要的库和驱动程序,包括Wayland或任何其他支持的图形后端。

    步骤 4:检查Qt Creator的配置

    在Qt Creator中,确认你的工具链(Toolchain)、调试器(Debugger)和设备(Device)配置是否正确。特别是确保调试器路径指向了正确的GDBmultiarch版本,设备配置中的IP地址和端口与你在开发板上启动GDBserver时使用的相匹配。

    步骤 5:重新编译和部署

    确保在解决了上述问题后,重新编译你的项目,并将其部署到开发板上。然后再次尝试启动GDBserver和Qt Creator的调试会话。

    通过这些步骤,你应该能够解决大多数与远程调试相关的常见问题。如果问题仍然存在,建议查看GDB和Qt Creator的官方文档,或在相关社区论坛寻求进一步的帮助。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月13日

悬赏问题

  • ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
  • ¥15 用C语言怎么判断字符串的输入是否符合设定?
  • ¥15 通信专业本科生论文选这两个哪个方向好研究呀
  • ¥50 我在一个购物网站的排队系统排队,这个排队到号后重新定向到目标网站进行购物,但是有技术牛通过技术方法直接跳过排队系统进入目标网址购物,有没有什么软件或者脚本可以用
  • ¥15 ios可以实现ymodem-1k协议 1024字节传输吗?
  • ¥300 寻抓云闪付tn组成网页付款链接
  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 uniapp实现如下图的图表功能