Curso调试Qt:GDB + Qt 官方 qt5printers.py + .gdbinit

先说结论:
在 Ubuntu 24.04 + GDB 下,不能用 natvis,natvis 只对 Windows + MSVC 调试器有效。

Linux / GDB 只认 Python pretty printers(就是之前给你的 qt5printers.py 那套),这是唯一原生、稳定、官方支持的方案。


为什么不能用 natvis

  • .natvis 是微软为 Visual Studio / VS Code + Windows 调试器(CDB/VS Debugger)设计的变量可视化格式
  • GDB(Linux 默认调试器)不支持 natvis
  • Cursor/VS Code 在 Linux 上底层还是 GDB,所以也不支持

你在 launch.json 里写 visualizerFile 这类配置,在 Ubuntu 上完全无效。


那 Ubuntu + Qt5.15 最好的方案是什么?

就是我上一轮给你的这套:
GDB + Qt 官方 qt5printers.py + .gdbinit

这是:

  • 最稳定
  • 官方自带
  • 一次配置永久生效
  • QString / QList / QMap / QVariant 全都能正常显示

比任何第三方插件都靠谱。


我给你精简成「最终可用版」(Ubuntu 24.04 + Qt5.15.0)

1)~/.gdbinit

python 复制代码
python
import sys
sys.path.insert(0, "/home/你的用户名/Qt5.15.0/Tools/QtCreator/share/qtcreator/debugger")
from qt5printers import register_printers
register_printers(gdb.current_objfile())
end

set print pretty on
set print object on

把路径换成你真实路径。

2)launch.json 正确配置(Linux GDB 专用)

json 复制代码
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/Debug/bin/RTMG_APP_XGW",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "Set Disassembly Flavor to Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                },
                {
                    "description": "Load Qt5 pretty printers",
                    "text": "source /home/david/MySoft/MyCode/MG_APPRT_Console/.vscode/.gdbinit",
                    "ignoreFailures": false
                }
            ]
        }

    ]
}

注意:type 是 cppdbg,不是 cppvsdbg,后者是 Windows 用的。


如果你实在想要"类似 natvis"的体验

在 Linux 下只有两个替代:

  1. 使用 LLDB + 自己写 formatters(麻烦,不如 qt5printers 稳定)
  2. 改用 Qt Creator 调试(它内置 natvis 风格显示,但编辑器不是 Cursor)

结论:

在 Cursor + Ubuntu + Qt5.15 下,老老实实用 qt5printers.py 是唯一正确、最简单、最稳的方案,别折腾 natvis 了,不支持。

需要我帮你把真实 Qt 路径直接填好,给你一份复制粘贴就能用的最终版吗?你只需要发我:

bash 复制代码
find ~/Qt5.15.0 -name "qt5printers.py"

的输出即可。

相关推荐
qq_4017004119 小时前
Qt Modbus 工程化封装:超时、重试、取消与资源释放,别让异步请求变成隐患
数据库·qt
全栈陈序员19 小时前
【Python】基础语法入门(三十三)—— 日志系统详解:用 logging 记录程序运行
java·开发语言·python
ESDWAN19 小时前
SD-WAN 是什么?工作原理、适用场景与选型要点
开发语言·网络·数据库·架构·php
iCxhust20 小时前
C#双时区时钟设计
开发语言·c#
sbjdhjd20 小时前
从污点追踪断点到 PHP-FPM 请求队列:HIDS PHP WebShell 样本复盘
开发语言·网络安全·数据挖掘·渗透测试·开源·php·shell
SEO_juper20 小时前
Go 站点地图生成器:从首页爬全站,一键生成 sitemap.xml
xml·开发语言·人工智能·golang·node.js·seo·外贸独立站
懂点Tech1 天前
ctfshow misc28:GIF 高度修改解题与脚本实现
开发语言·windows·python
云和数据.ChenGuang1 天前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
美狐美颜SDK开放平台1 天前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
dtq04241 天前
C++小案例 - 日志实战
开发语言·c++