如何:在调试器中监视表达式

更新:2010 年 12 月

本主题适用于:

版本

Visual Basic

C#

F#

C++

Web Developer

学习版

主题适用 主题适用 主题适用 主题适用 主题适用

专业版、高级专业版和旗舰版

主题适用

主题适用

主题适用

主题适用

主题适用

在**“监视”窗口和“快速监视”**对话框中,可以输入要在调试会话期间监视的变量的名称和表达式。

使用**“快速监视”**对话框在同一时间可以检查单个变量或单个表达式。 它可用来快速查看一个值或一个较大的数据结构。 **“监视”窗口可以存储多个要在调试会话过程中查看的变量和表达式。 某些版本的 Visual Studio 有多个“监视”**窗口,其编号为 Watch1Watch4

有关如何打开**“监视”“快速监视”**窗口的更多信息,请参见显示变量窗口

变量名是可输入的最简单的表达式。 如果要调试本机代码,可以使用注册名以及变量名。 然而,调试器还可以接受比这更复杂的表达式。 例如,您可以输入下列表达式以获得三个变量的平均值:

(var1 + var2 + var3) / 3

在 C# 中,可以输入对象 ID 或别名,而不能输入对象名。

调试器在**“监视”**窗口中接受大多数合法的语言表达式。 有关更多信息,请参见调试器中的表达式

如果正在用本机代码编程,有时可能需要限定变量名或包含变量名的表达式的上下文。 上下文指变量所处的函数、源文件和模块。 如果需要限定上下文,您可以使用上下文运算符语法。 有关更多信息,请参见上下文运算符(C/C++ 语言表达式)

影响程序状态的表达式

计算某些表达式可以更改变量的值,或会影响程序的状态。 例如,计算下列表达式会更改 var1 的值:

var1 = var2

更改数据的表达式被称为有副作用的表达式。 如果在**“监视”窗口中输入有副作用的表达式,则每次“监视”**窗口计算该表达式时都将发生副作用。 如果您不知道该表达式有副作用,则可能产生意外的结果。 首次输入已知有副作用的表达式时,将只对其计算一次。 随后的计算将被禁用。 通过单击出现在值旁边的更新图标,可以手动重写此行为。

意外的副作用通常是函数求值的结果。 例如,您可能在**“监视”**窗口中输入了以下函数调用:

Func1(var1)

如果从**“监视”窗口或“快速监视”调用函数,则被调用的函数可能更改数据,从而产生副作用。 避免函数计算可能产生的意外副作用的方法之一是在“选项”**对话框中关闭自动函数计算功能。 这将禁止对较新的语言功能(例如属性)进行自动计算。 但这样会更加安全。

提示

当在“监视”窗口中检查表达式时,可能会看到一个更新图标,该图标就像是绿色圆圈中按相反方向旋转的两个绿色箭头。 如果已经关闭了自动函数计算功能,则更有可能看到刷新图标。 该更新图标指示存在错误或过期的值。 有关更多信息,请参见如何:刷新监视值

对于本机代码和 C#,可以使用格式说明符指定表达式值的显示格式。 有关更多信息,请参见C++ 中的格式说明符C# 中的格式说明符

Visual Studio 调试器将自动展开常见的数据类型,以显示这些数据类型的最重要的元素。 您可以添加展开自定义数据类型的行为。 有关更多信息,请参见显示自定义数据类型可视化工具

提示

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置

计算“监视”窗口中的表达式

  1. 在**“监视”窗口中,单击“名称”**列中的空行。 调试器在此时必须处于中断模式。 键入或粘贴要监视的变量名或表达式。

    - 或 -

    将变量拖到**“监视”**窗口中的某行。

  2. 按 Enter。

    结果出现在**“值”列中。 如果键入数组或对象变量的名称,“名称”列中的名称旁边就会出现树控件。 您可以展开或折叠“名称”**列中的变量。

    表达式一直保留在**“监视”**窗口中,直到将其删除为止。

计算“快速监视”中的表达式

  1. 在**“快速监视”对话框中,将变量、寄存器或表达式键入或粘贴到“表达式”**文本框中。

  2. 单击**“重新计算”**或按 Enter。

  3. 值出现在**“当前值”**框中。

  4. 如果在**“表达式”框中键入数组或对象变量的名称,则“当前值”框中的名称旁边就会出现树控件。 您可以展开或折叠“名称”**列中的变量。

重新计算“快速监视”中以前的表达式

  1. 在**“快速监视”对话框中,单击出现在“表达式”**框右侧的向下箭头。

  2. 从下拉列表中选择一个以前的表达式。

  3. 单击**“重新计算”**。

请参见

任务

如何:使用调试器变量窗口

其他资源

变量窗口

修订记录

日期

修订记录

原因

2010 年 12 月

添加了相应过程链接,介绍如何显示“监视”“快速监视”窗口。

客户反馈