WenCoo 2023-04-04 14:17 采纳率: 33.3%
浏览 264
已结题

vscode调试qt不显示值

问题遇到的现象和发生背景

我的编程环境是:本地是一台win10的笔记本,使用vscode软件,远程到一台gpu服务器上,GPU服务器上有docker,通过端口,连接到了docker里面,进行代码开发,项目中是c++项目,用到了qt,发现在vscode中debug程序时,不能显示qt类的值,只显示地址值,参考了网上使用qt.natvis.xml的方法,将该文件防止在docker容器内,和防止在win机器上,均不起作用。有没有人处理过该问题,望解答。

操作环境、软件版本等信息

vscode版本:1.76.1
qt版本:5.12.12

尝试过的解决方法

https://blog.csdn.net/qq_41539778/article/details/102926811

https://blog.csdn.net/weixin_49065061/article/details/129424255

我想要达到的结果

想在使用vscode调试是,能够显示qt类的值,而不是地址

  • 写回答

6条回答 默认 最新

  • 小逸2023 2023-04-04 22:39
    关注
    该回答引用ChatGPT
    这个问题可能与Qt的调试信息格式有关。Qt在编译时可以生成不同格式的调试信息,而默认情况下是使用gdb格式的调试信息。但是,VSCode的调试器使用的是Microsoft的调试引擎,需要使用MSVC格式的调试信息。

    因此,您可以尝试在编译Qt时使用MSVC格式的调试信息。具体来说,您可以按照以下步骤进行:

    1. 在Qt安装目录下找到mkspecs目录,复制一份msvc-desktop的目录,并重命名为vscode-desktop。

    2. 打开vscode-desktop目录下的qmake.conf文件,将其中的QMAKE_CFLAGS_DEBUG和QMAKE_CXXFLAGS_DEBUG分别设置为:


    QMAKE_CFLAGS_DEBUG += /Z7
    QMAKE_CXXFLAGS_DEBUG += /Z7


    这样就可以生成MSVC格式的调试信息了。

    3. 重新编译您的Qt项目。

    4. 在VSCode的launch.json文件中,将“program”属性设置为您的可执行文件路径,将“MIMode”属性设置为“lldb”。

    5. 在VSCode的settings.json文件中,添加以下配置:


    "lldb.formats": [
    {
    "name": "Qt",
    "type": "^Q[A-Z][a-zA-Z0-9]*$",
    "children": [
    {
    "name": "pointer",
    "format": "Hex: ${var%{unsigned long long}x}"
    },
    {
    "name": "QtCore.QRectF",
    "children": [
    {
    "name": "x",
    "format": "${var.x()}f"
    },
    {
    "name": "y",
    "format": "${var.y()}f"
    },
    {
    "name": "width",
    "format": "${var.width()}f"
    },
    {
    "name": "height",
    "format": "${var.height()}f"
    }
    ]
    }
    ]
    }
    ]


    这个配置将会帮助lldb正确地解析Qt的调试信息。

    6. 重新启动VSCode并调试您的应用程序。现在,您应该能够看到Qt类的值而不是地址了。

    需要注意的是:以上方法只适用于Windows环境下的Qt项目调试。如果您的环境不同,可能需要做一些调整。
    评论

报告相同问题?

问题事件

  • 系统已结题 4月12日
  • 创建了问题 4月4日