You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移至QBS后QML调试失效,寻求解决方案

解决QBS迁移后QML调试失效的问题

我之前也碰到过类似的QBS迁移后QML调试罢工的情况,结合你已经做的排查步骤,给你几个更深入的方向试试:

  • 确认QBS属性的添加位置正确
    你手动配置的Qt.declarative.qmlDebugging:true和Qt.quick.qmlDebugging:true,要确保是加在Product节点下,而不是项目根节点。全局添加的话可能不会被目标应用继承,导致调试开关没真正生效。示例配置如下:

    Product {
        name: "YourApplication"
        type: "application"
        // 把调试属性放在这里
        Qt.declarative.qmlDebugging: true
        Qt.quick.qmlDebugging: true
        // 其他项目配置...
    }
    
  • 手动注入QML调试启动参数
    QML调试需要程序启动时携带特定参数,有时候Qt Creator和QBS的联动可能没自动加上。你可以去Qt Creator的「Run」配置里,手动添加命令行参数:

    -qmljsdebugger=port:12345,block
    

    端口选一个未被占用的即可,block参数会让程序启动时等待调试器连接,方便你提前设置断点。

  • 检查调试器类型是否同时启用C++和QML
    切换到「Run」配置的「Debugger」标签页,确认「Debugger type」选择的是「Auto」,或者手动勾选「Enable QML debugging」和「Enable C++ debugging」。有时候更换构建系统后,这个配置会被重置为仅启用C++调试。

  • 强制添加QML调试编译宏
    QML调试需要编译时定义QT_QML_DEBUG宏,虽然理论上qmlDebugging属性会自动添加这个宏,但手动兜底可以排除属性未生效的问题:

    Product {
        // ...其他配置
        cpp.defines: base.concat(["QT_QML_DEBUG"])
    }
    
  • 尝试升级QBS版本(可选)
    QBS 1.10.1是比较老旧的版本了,旧版本和Qt 5.10.1可能存在调试联动的兼容性bug。如果前面的方法都没用,可以试试升级QBS到1.15以上的版本,或许能解决这类适配问题。

另外,你可以启动程序后看看Qt Creator的「Debug」输出面板,有没有类似「QML Debugger: Waiting for connection on port xxxx」的日志——如果没有,说明程序根本没启动QML调试服务,得回到前面的配置重新检查。

内容的提问来源于stack exchange,提问作者Ivan Fateev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:10:15