必须手动配置CDB调试器,因其不属于MSVC编译器默认组件,需单独安装Windows SDK Debugging Tools并正确绑定Kit;路径、符号、编码三者缺一不可。

Qt Creator 配合 MSVC 调试必须手动配置 CDB 调试器,否则点击“调试”按钮会直接报错 Cannot find debugger 或弹出空调试窗口——这不是 Qt Creator 的 bug,而是 MSVC 工具链默认不带调试器组件。
为什么 CDB 不是自动可用的?
MSVC 编译器(cl.exe)和 Windows 调试器(cdb.exe)分属不同安装包:前者随 Visual Studio 或 Build Tools 安装,后者属于 Windows SDK Debugging Tools,需单独勾选或下载。很多开发者只装了编译器,却漏掉调试工具,导致 Qt Creator 找不到 cdb.exe。
- Visual Studio 安装时,“使用C++的桌面开发”工作负载默认不含调试器,必须在“单个组件”里手动勾选
Debugging Tools for Windows - 若用 Visual Studio Build Tools(轻量版),更需主动安装
Windows 10/11 SDK并确保包含Debugging Tools子项 - 安装路径通常为:
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe(x64 版本)或\x86\cdb.exe(x86)
Qt Creator 中如何正确配置 CDB 调试器?
配置不是点“自动检测”就能完事——Qt Creator 的“Auto”选项只识别 MinGW 的 gdb.exe,对 CDB 无效,必须手动指定路径并设置符号路径。
- 打开
工具 → 选项 → 调试器 → CDB 调试器,点击“添加”,填入cdb.exe的完整路径(如C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe) - 在“符号路径”栏填入本地缓存目录,例如
C:\symcache(需提前创建该文件夹),避免每次调试都联网下载符号 - 回到
构建和运行 → 构建套件,编辑你正在用的 MSVC Kit,在“调试器”下拉框中选择刚才添加的 CDB 条目(不是“Auto”) - 确认 Kit 的“编译器”和“调试器”版本位数一致(x64 Kit 必须配 x64
cdb.exe,混用会导致启动失败)
调试时 .pdb 文件找不到怎么办?
即使 CDB 配置成功,也可能卡在“Loading symbols…”或显示“no debug info”,根本原因是 Qt 项目没生成或没定位到正确的 .pdb 文件——它不是可选附件,而是调试必需品。
- 确保构建配置是
Debug模式(不是 Release),且.pro文件中未禁用调试信息:CONFIG += debug(Qt 默认已启用) - 检查输出目录下是否存在与
.exe同名的.pdb文件(如myapp.exe对应myapp.pdb),没有则说明编译未生成调试符号 - 若用 qmake,可在
.pro中显式加:QMAKE_CFLAGS_DEBUG += /Zi和QMAKE_CXXFLAGS_DEBUG += /Zi(MSVC 的调试信息开关) - CDB 默认只从可执行文件同目录加载
.pdb;若.pdb在别处(如 build 目录),需在 Qt Creator 的 CDB 符号路径中追加该路径(用分号分隔)
中文字符串显示为乱码或问号?
这不是调试器问题,而是 MSVC 编译器默认用 GBK 解析 UTF-8 源码导致的内部字符串损坏——断点停在 QString 变量上看到的是错乱字节,根本无法 inspect。
- 在
.pro文件中为 MSVC 添加编码标志:msvc { QMAKE_CXXFLAGS += /source-charset:utf-8 /execution-charset:utf-8 } - 确保源文件本身保存为 UTF-8 无 BOM 格式(Qt Creator 默认即如此,但用其他编辑器保存时需注意)
- 控制台输出乱码另需额外处理:Windows 控制台默认代码页非 UTF-8,可在 main() 开头加
SetConsoleOutputCP(CP_UTF8);(需#include <windows.h>) - 此配置必须在编译前生效,改完
.pro后要重新 qmake(右键项目 → “重新运行 qmake”)
真正容易被忽略的点是:CDB 路径、.pdb 位置、源码编码三者必须同时正确,缺一不可。很多人调通了 CDB 却卡在符号加载,或解决了乱码却因 Kit 里调试器选错而无法启动——它们不是孤立步骤,而是环环相扣的链条。


















