【AI时代速通QT】第四节:Windows下Qt Creator调试指南

目录

引言

一、理解两种核心编译环境:MinGW vs MSVC

1.1 MinGW (Minimalist GNU for Windows)

1.2 MSVC (Microsoft Visual C++)

1.3 小结

二、安装与配置CDB调试器

三、在Qt Creator中关联CDB

四、Qt Creator调试实战入门

4.1 核心调试快捷键

4.2 实战演练

结语


  🎬 攻城狮7号个人主页

🔥 个人专栏:C++QT跨平台界面编程

⛺️ 君子慎独!

 🌈 大家好,欢迎来访我的博客!
⛳️ 此篇文章主要介绍 Windows下Qt Creator调试指南
📚 本期文章收录在《C++QT跨平台界面编程》,大家有兴趣可以自行查看!
⛺️ 欢迎各位 ✔️ 点赞 👍 收藏 ⭐留言 📝!

引言

        对于任何一位C++开发者而言,代码调试都不仅仅是一项技能,更是一种内功。尤其是在开发复杂的图形界面应用或处理底层逻辑时,我们不可避免地会遇到各种预料之外的Bug。此时,能够娴熟地运用调试器,就像拥有一双"透视眼",可以洞察程序的内部状态,跟踪代码的执行流程,精准地定位问题的根源。

        然而,对于许多初次在Windows平台上使用Qt Creator的开发者来说,配置调试环境,特别是使用微软的MSVC编译器时,常常会遇到"调试器未设置"或"无法调试"的窘境。这往往是因为Qt Creator本身不捆绑MSVC的调试器,需要我们手动安装和配置。

        本文我们将从理解Qt在Windows上的两种核心编译环境出发,手把手带你完成MSVC调试环境(CDB)的安装与配置,并最终通过实战演练,让你熟练掌握Qt Creator中的核心调试技巧。无论你是初学者还是有一定经验的开发者,相信这篇文章都能为你扫清障碍。

一、理解两种核心编译环境:MinGW vs MSVC

        在Windows上使用Qt,我们通常会面临两种主流编译工具链的选择,你的选择直接决定了调试环境的配置难度。

1.1 MinGW (Minimalist GNU for Windows)

        是什么:简单来说,MinGW就是一套能让Windows系统使用GCC编译器的工具集。GCC是Linux世界下的标准编译器,因此MinGW相当于把Linux下的开发环境"搬"到了Windows上。

        调试器:它自带了著名的调试器 GDB (GNU Debugger)。

        优点:安装方便,开箱即用。只要你在安装Qt时选择了基于MinGW的版本,其附带的Qt Creator会自动配置好GDB,你几乎不需要任何额外操作就可以直接开始调试。

        缺点:虽然方便,但编译出的程序在调用Windows特有的API、或与使用MSVC编译的第三方库(.lib)链接时,可能会遇到兼容性问题。

1.2 MSVC (Microsoft Visual C++)

        是什么:这是由微软官方提供的C++编译器,是Visual Studio的核心组件,也是Windows平台下的"原生"编译器。

        调试器:它使用微软自家的调试器 CDB (Console Debugger)。

        优点:与Windows操作系统和各类SDK的兼容性最佳,性能通常也更有保障。如果你需要开发深度依赖Windows特性的应用,或者与大量使用Visual Studio开发的库进行交互,MSVC是毫无疑问的首选。

        缺点:Qt Creator的安装包中 不包含 CDB调试器。因此,如果你选择了MSVC作为编译器,就必须手动安装配置CDB,这也是本文的重点。

1.3 小结

        如果你的项目简单,或者你想快速上手,选择 MinGW 版本可以免去配置调试器的麻烦。但如果你追求最佳的平台兼容性和性能,或者项目需要与Visual Studio生态深度集成,那么请选择 MSVC 版本,并跟随我们完成接下来的配置。

二、安装与配置CDB调试器

        既然选择了MSVC,我们就来解决CDB的安装问题。CDB包含在微软提供的"Windows SDK"中,我们只需要从中提取出调试工具即可。

        核心步骤:下载并只安装"Debugging Tools for Windows"。

(1)下载Windows SDK

        打开你的浏览器,搜索关键词"Windows SDK"(例如 "Windows 10 SDK" 或 "Windows 11 SDK")。进入微软官方的下载页面。

        或者直接点击这个地址(Windows SDK 和模拟器存档 | Microsoft Developer),进去页面直接点击下载安装包 winsdksetup.exe。

(2)精准安装调试工具

        运行你刚刚下载的SDK安装程序。

        安装路径:第一个界面会让你选择安装路径,保持默认或选择一个你喜欢的位置即可,但请记住这个路径。

          功能选择(最关键的一步):接下来,你会看到一个长长的功能列表,让你选择要安装的组件。默认情况下是全选的,但我们完全不需要这么多东西。请将所有复选框的勾选全部取消,只保留一项:"Debugging Tools for Windows"。其实以前安装vs的时候我们会选择安装windows的sdk,这里的安装就可以省略,没有安装vs ide软件的可以参考我们专栏从零开始学C语言编程 的前置章节安装。

        SDK安装选项中只勾选Debugging Tools for Windows

        这样做的好处是极大地减少了安装时间和磁盘空间占用,我们只获取了我们真正需要的东西。点击"Install"按钮,等待安装完成。

(3)确认CDB路径

        安装完成后,我们需要知道`cdb.exe`被安装在了哪里。根据你的系统是32位还是64位,它通常位于你之前选择的安装路径下的这个位置:

        64位: `C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe`

        32位: `C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\cdb.exe`

        请亲自到这个路径下看一看,确认`cdb.exe`文件确实存在。这个路径在下一步中至关重要。

三、在Qt Creator中关联CDB

        安装好CDB后,我们需要告诉Qt Creator去哪里找这个工具。

        最佳时机:如果你是在安装Qt Creator 之前 就完成了上述Windows SDK的安装,那么Qt Creator在首次启动时有很大概率会自动检测到CDB并完成配置。你可以直接跳到本章的最后一步"检查构建套件"来确认。

        手动配置:如果你是后装的SDK,或者自动检测失败了,请按照以下步骤手动配置:

(1)打开选项菜单:

        在Qt Creator的菜单栏中,选择 `工具` -> `选项...`。

(2)定位到Debuggers选项卡:

        在弹出的对话框中,选择左侧的 `构建和运行`,然后点击上方的 `Debuggers` 选项卡。

(3)添加新的调试器:

        在右侧,你会看到一个已有的调试器列表。点击 `Add` 按钮。

        会有一条新条目被添加进来。你可以给它起一个好记的名字,比如 `My CDB x64`。

        重点是 `Path` 这一行。点击最右侧的 `Browse...` 按钮,然后导航到上面你找到的 `cdb.exe` 文件的完整路径。

        选择 `cdb.exe` 文件后,点击 `Apply` 保存。

(4)检查并关联构建套件(Kit)

        现在,切换到 `构建套件 (Kits)` 选项卡。

        "构建套件"是Qt Creator的核心概念,它是一套完整的工具组合:编译器 + Qt版本 + 调试器

        在列表中找到你当前项目正在使用的Kit(通常是基于MSVC的,例如 `Desktop Qt 5.13.0 MSVC2019 64bit`)。

        点击选中它,查看它的详细配置。

        找到 `调试器`(Debuggers) 这一项。如果它之前显示一个黄色的警告图标,现在你应该可以从下拉菜单中选择你刚刚添加的调试器(例如 `My CDB x64`)。

        在Kit中选择刚刚配置好的CDB调试器。

        选择好之后,你会发现黄色的警告图标消失了。

        点击 `OK` 关闭选项对话框。

        至此,你的Qt Creator已经拥有了在MSVC环境下进行调试的全部能力!

四、Qt Creator调试实战入门

        配置只是第一步,真正重要的是在实践中运用。让我们通过一个简单的例子,来掌握最核心的调试操作。

4.1 核心调试快捷键

        在调试时,效率就是生命。请务必牢记以下几个与Visual Studio完全一致的核心快捷键,它们将覆盖你95%以上的调试操作:

        `F5`: 开始调试。如果程序未运行,则启动并运行到第一个断点处。

        `F9`: 设置/取消断点。在光标所在行设置或取消一个断点。

        `F10`: 单步跳过 (Step Over)。执行当前行代码,如果当前行是函数调用,它会执行完整个函数,然后停在下一行,不会进入函数内部。

        `F11`: 单步进入 (Step Into)。执行当前行代码,如果当前行是函数调用,它会立即跳转到该函数的第一行代码处暂停。

        `Shift + F11`: 单步跳出 (Step Out)。如果你已经进入一个函数内部,这个快捷键会执行完该函数余下的所有代码,然后返回到调用它的地方。

         `Shift + F5`: 停止调试。

4.2 实战演练

        我们用以下代码为例:

#include <QCoreApplication>

#include <QDebug>


void testFunction()

{

    int i = 0; // 我们将在这里设置断点

    qDebug() << "Inside testFunction";

}


int main(int argc, char *argv[])

{

    QCoreApplication a(argc, argv);


    qDebug() << "Calling testFunction for the first time.";

    testFunction(); // F10 和 F11 在这里的表现不同

    qDebug() << "Calling testFunction for the second time.";

    testFunction();


    return a.exec();

}

(1)设置断点:

        将光标移动到 `main` 函数中的 `testFunction();` 这一行。

        按下 `F9` 键。你会看到行号左侧出现一个红色的实心圆点,这表示断点已设置成功。

(2)开始调试:

        按下 `F5` 键,而不是工具栏上那个普通的绿色"运行"按钮。调试模式的启动按钮是一个带有小虫子的绿色三角。

        程序会开始编译和运行,然后自动停在你设置了断点的 `testFunction();` 这一行,该行会以黄色高亮显示。

(3)观察与交互:

        此时,程序是暂停的。你可以将鼠标悬停在变量(如 `argc`)上查看其当前值。

        在Qt Creator的右侧(或下方,取决于你的布局),通常会有"局部变量和监视"窗口,里面列出了当前作用域内所有变量的值。你可以展开 `argv` 这样的数组或对象,查看其内部成员的详细信息。

(4)体验 F10 与 F11 的区别:

        按下 F10 (单步跳过):程序会执行 `testFunction()`,然后在调试窗口的输出中,你会看到 "Inside testFunction" 被打印出来。代码高亮会移动到下一行 `qDebug() << "Calling testFunction for the second time.";`。整个过程你都没有进入 `testFunction` 的内部。

        现在程序停在第二个 `testFunction();` 调用上。

        按下 F11 (单步进入):这一次,代码高亮会瞬间"跳"进 `testFunction` 函数内部,停在 `int i = 0;` 这一行。这就是"进入"函数的区别。你可以继续按 `F10` 逐行执行函数内部的代码。

(5)结束调试:

        当你完成了所有想观察的操作后,可以按 `Shift + F5` 提前终止调试会话。

结语

        我们从理解MinGW与MSVC的区别开始,一步步完成了在Windows上为Qt Creator配置CDB调试器的全过程,并掌握了`F5`, `F9`, `F10`, `F11`这四大金刚快捷键。

        调试能力是衡量一个程序员专业水准的重要标尺。它不仅能帮助我们修复问题,更能让我们深刻理解代码的实际行为和框架的内部机制。希望这篇指南能为你铺平道路,让你从此不再畏惧调试,而是把它当作探索和学习的强大工具,在C++开发的道路上走得更远、更稳。

看到这里了还不给博主点一个:
⛳️ 点赞☀️收藏 ⭐️ 关注

💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
再次感谢大家的支持!
你们的点赞就是博主更新最大的动力!

评论 89
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攻城狮7号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值