目录
1.1 MinGW (Minimalist GNU for Windows)
1.2 MSVC (Microsoft Visual C++)
🎬 攻城狮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++开发的道路上走得更远、更稳。
看到这里了还不给博主点一个:
⛳️ 点赞
☀️收藏
⭐️ 关注
!
💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
再次感谢大家的支持!
你们的点赞就是博主更新最大的动力!