如何在 Qt 调试器中计算表达式?

问题描述 投票:0回答:1

我正在研究一个大型 Qt/C++ 项目,并试图根据源代码并在调试器的帮助下找到解决它的方法。我并不是在寻求有关该项目的帮助,但我对调试器在以下情况下的行为方式感到困惑。

有一个 if 语句如下:

    if (multiInstancesProvider()->isMainInstance()) {
        splashScreen = new SplashScreen(SplashScreen::Default);
    }

我认为,这的确切含义对于我的问题并不重要。我的问题如下:

当我在“if”行上设置断点并单步执行时,标记移动到“splashScreen”行。我认为这意味着此时的条件评估为

true
。但是,当我在“表达式”视图的“名称”列中输入条件
multiInstancesProvider()->isMainInstance()
时,它会在“值”列中给出
<no such value>

经过一些实验,我发现如果我在 if 语句之前插入一行:

bool condition = multiInstancesProvider()->isMainInstance()

如果我在“表达式”视图中输入

condition
,它确实会在值列中给出
true

这是否意味着调试器不能计算表达式,只能计算变量?或者表达式有特殊的语法吗?感谢您的帮助!

c++ qt debugging
1个回答
0
投票

要在 Qt 调试器中计算表达式,请使用 Qt Creator 中的“表达式”或“局部变量”视图。调试时,您可以在“表达式”窗口中输入变量名称、对象属性或自定义表达式来监视它们的值。或者,您可以右键单击代码中的变量或对象,然后选择“添加表达式求值器”以在调试期间跟踪其值。 “局部”视图还显示局部变量的当前状态,使您可以一目了然地检查和评估它们。这些工具使您能够交互式地检查代码行为并实时诊断问题。

© www.soinside.com 2019 - 2024. All rights reserved.