必须进入调试模式并启用Locals和Expressions视图才能查看变量值:使用F5或带虫子图标按钮启动调试,确认构建套件为Debug模式,右键Debugger区域勾选Locals和Expressio。

能直接看到变量值,前提是调试器已正确进入中断状态、且变量视图已启用——否则你看到的只是空面板或“未定义”。
断点设对了,但没进调试模式
Qt Creator 有两个绿色三角形按钮:上面那个是「运行」(Run),下面带小虫子图标的是「调试」(Debug)。点错就只会跑程序,不会停在断点,自然看不到变量。必须用 F5 或小虫子按钮启动,且项目构建套件得是 Debug 模式(左下角确认显示 “Debug” 而非 “Release”)。
- 如果点击后程序一闪而过没暂停,大概率是用了 Run 按钮,或者构建配置不是 Debug
- 即使设置了断点,Release 模式下断点无效,变量也可能被优化掉,
locals面板为空 - 某些 Qt 版本(如 Qt 5.15 + Clang)需在项目设置中勾选「启用调试信息」,否则调试器无法解析符号
变量窗口没出现,或局部变量不显示
默认不一定会弹出变量面板。调试暂停后,右键点击 Debugger 区域任意空白处,确保勾选了 Locals and Expressions —— 这是显示函数内局部变量和手动添加表达式的核心开关。
- 全局变量、静态变量不会自动出现在
Locals标签页,得手动在Expressions标签页点“+”号输入变量名 - 若变量名输错、作用域已退出(比如断点在函数末尾大括号后),会显示
<not accessible></not> - 结构体或对象成员嵌套过深时,
Locals默认只展开一级;需要点击右侧的“▶”逐层展开
指针显示的是内容,不是地址
默认开启「自动去除对指针的引用」,所以 int* p 在变量面板里直接显示 p → 42,而不是地址值。想看指针本身(如 0x7ffeeb2a1230),右键该变量 → 取消勾选 Auto-dereference pointers。
- 对数组指针(如
double* data),想查看连续内存块,可在Expressions中输入*(double[100]*)data强制解释为 100 个 double 的数组 - 若类型转换失败(如
void*),先 cast 成具体类型再解引用,例如*(QByteArray*)ptr - 悬停查看变量时,也受此选项影响;取消后悬停显示的是地址,而非所指内容
修改变量值后不生效?
只能在调试暂停时修改,且修改立即写入当前栈帧内存。但要注意:如果变量被编译器优化为寄存器变量(尤其 Release 模式或高优化等级),修改可能无效或被后续指令覆盖。
- 在
Locals或Expressions面板双击值列,输入新值(字符串加引号,布尔用true/false) - 通过调试器控制台(
Debugger Console)赋值更灵活,例如:user.status = Status::Ready,但需确保类型可识别 - 修改 const 变量、引用或临时对象会失败,提示
Cannot assign to variable
最常被忽略的一点:调试器能否正确显示变量,高度依赖符号表完整性。如果改了头文件但没重新构建,或用了预编译头且未清理缓存,Locals 可能显示旧类型甚至崩溃。遇到怪异行为,先 clean rebuild 一次。


















