表达式评估

要计算算术表达式或函数调用值,请使用 表达式 视图中的表达式评估器。

您可以检查调试器未将其视为 局部变量 的静态变量。例如,如果您在一个源文件中定义了 static int staticVar = 42; 然后将 staticVar 添加为一个评估表达式,当调试器在源文件中停止时,您应该在视图中看到 42

{Expressions view}

添加表达式评估器

要将表达式评估器添加到,请将表达式从代码编辑器拖动到 表达式 视图。

您也可以

  • 表达式局部 视图中双击。
  • 从上下文菜单中选择 添加新的表达式评估器

新评估表达式 对话框中输入表达式

{New Evaluated Expression dialog}

已评估表达式的集合将保存到您的会话中。

注意:表达式评估器功能强大,但会显著减慢调试器操作。请节俭使用,并在不再需要时删除它们。

表达式评估器会在当前帧更改时重新评估。表达式中的函数每次都会调用,即使它们有副作用。

表达式视图操作

右键单击 表达式 视图可以选择以下操作

  • 添加和删除表达式评估器
  • 更改值显示格式
  • 展开和折叠视图内容
  • 复制视图内容或表达式值到剪贴板
  • 在编辑器中打开视图内容
  • 打开内存编辑器
  • 设置数据断点
  • 使用 调试助手
  • 在调试时在视图中显示和隐藏工具提示
  • 自动取消引用指针
  • 按字母顺序对类和结构体的成员进行排序
  • 使用动态对象类型进行显示
  • 设置调试器首选项

JavaScript 表达式

QML 调试器可以评估 JavaScript 表达式。

C 和 C++ 表达式

GDB、LLDB和CDB支持评估简单的C和C++表达式。函数只有在实际编译到调试的可执行文件或可执行文件使用的库中时才能调用。如大多数标准容器中的operator[]实现之类的内联函数通常通常不可用。

当使用GDB或LLDB作为后端时,您可以使用特殊的变化语法在一次表达式中显示多个值。形式为foo[a..b]的子表达式被分解为一个单独评估表达式的序列foo[a], ..., foo[b]

您可以展开结构体或类类型的复合变量以显示它们的成员。由于您还可以查看变量值和类型,因此可以检查和遍历对象数据的底层布局。

GDB和LLDB以及Qt Creator的调试器都适用于Linux和macOS的优化构建。优化可能会导致指令重新排序或删除一些局部变量,导致局部变量表达式视图显示意外的数据。

来自GCC的调试信息没有包含关于变量初始化时间的足够信息。因此,Qt Creator无法确定本地变量的内容是QObject真实数据还是初始噪声。如果一个QObject未初始化,则报告它的值为不在作用域内。然而,并非所有未初始化的对象都可以被识别为这样的对象。

另请参阅如何:调试调试调试器调试器

©2024 Qt公司有限公司。本文档的文档贡献是各自所有者的版权。提供的文档在此根据自由软件基金会的版本1.3的GNU自由文档许可术语授予许可。Qt及其相应标志是芬兰和/或其他国家的Qt公司的商标。所有其他商标均为其各自所有者的财产。