Qt Creator 本身不自带调试器,需手动指定系统已安装的gdb、lldb或cdb等调试器可执行文件路径,并将其与Kit绑定才能启用调试功能。

Qt Creator 本身不自带调试器,它只是调用系统已安装的调试后端(比如 gdb、lldb 或 cdb)。所以“添加调试器”的本质是:告诉 Qt Creator 哪个可执行文件是你要用的调试器,并把它和某个构建套件(Kit)关联起来。没装对调试器或路径填错,就会卡在“Unable to create a debugging engine”这类错误上。
怎么确认系统里有没有装调试器?
别跳过这步——很多问题根源就在这儿。
-
gdb:Linux/macOS 通常自带;Windows 上 MinGW 版 Qt 自带gdb.exe,路径类似MinGWxx_64/bin/gdb.exe -
lldb:macOS 默认可用;Linux 需手动装lldb包(如 Ubuntu 执行sudo apt install lldb) -
cdb:Windows 上必须单独装,不是 VS 自带的 GUI 调试器——要装Debugging Tools for Windows,它是 Windows SDK 的一部分,控制面板里找Windows Software Development Kit→ 更改 → 勾选Debugging Tools for Windows
验证方式很简单:打开终端或命令提示符,直接输入 gdb --version、lldb --version 或 cdb -version,有输出就说明能用。
Qt Creator 里怎么手动添加调试器路径?
路径填错是最常见的配置失败原因。不是选“自动检测”,而是得自己指定完整可执行文件路径。
- 打开
Tools → Options → Debuggers - 点击
Add,类型选Custom - 名称随便写(比如
gdb-12.1),但“Location”必须是绝对路径,不能是相对路径或环境变量 - Linux/macOS 示例:
/usr/bin/gdb或/opt/homebrew/bin/lldb - Windows MinGW 示例:
C:/Qt/Tools/mingw112_64/bin/gdb.exe - Windows MSVC 示例:
C:/Program Files (x86)/Windows Kits/10/Debuggers/x64/cdb.exe(注意是x64或x86目录,取决于你的目标架构)
填完点 OK,它会自动尝试运行并识别版本。如果报错“Cannot start debugger binary”,八成是路径不对、权限不足,或者该调试器不兼容当前 Qt Creator 架构(比如 32 位 Qt Creator 调用 64 位 cdb.exe)。
Qt Creator 18.0.2 Windows x86_64 历史版本安装包,适合需要旧版本 IDE、旧项目兼容、Qt/C++ 项目维护、构建套件配置和调试环境回退的用户使用。
为什么选了调试器还是不能调试?
因为调试器只是工具链一环,它必须和 Kit 绑定才生效。很多人只配了调试器,却忘了在 Kit 里指定它。
- 进入
Tools → Options → Kits - 选中你正在用的 Kit(比如
Desktop Qt 6.5.3 MinGW 64-bit) - 在
Debugger下拉框里,手动选你刚添加的那个调试器(不是默认的“Auto”) - 确保
Compiler和Qt version也匹配——比如 MinGW Kit 必须配 MinGW 编译器 + 对应的 MinGW Qt 版本,否则生成的二进制没有调试符号,gdb进去也看不到变量
还有一个隐藏坑:某些 Qt 安装包(尤其是在线安装器装的)默认不带调试信息(.pdb 或 .debug 文件)。调试 Qt 自身源码时,得额外装 Qt Debug Information Files 组件,否则断点进 QMainWindow 就停在汇编里。
交叉编译环境下怎么配调试器?
比如用 ARM 工具链编译嵌入式程序,Qt Creator 本地跑的是 x86_64,但目标机是 ARM,这时调试器不能用本地 gdb,得用交叉版 arm-linux-gnueabihf-gdb。
- 调试器路径填交叉工具链里的
gdb,比如/opt/gcc-arm-none-eabi/bin/arm-none-eabi-gdb - Kit 的
Debugger选这个交叉gdb,同时勾选Use remote debugging - 在
Run Settings → Run Configuration里填好 GDB server 地址(比如localhost:2331),并确保目标板上已运行gdbserver
注意:交叉 gdb 和宿主机 gdb 是两个独立可执行文件,别混用。而且交叉 gdb 一般不带 Python 支持,某些高级脚本功能会失效。
-g 编译出来的调试信息。

















