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

更新:2007 年 11 月

本主题适用于:

版本

Visual Basic

C#

C++

Web Developer

速成版

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

标准版

主题适用

主题适用

主题适用

主题适用

专业团队版

主题适用

主题适用

主题适用

主题适用

表格图例:

主题适用

适用

主题不适用

不适用

主题适用,但命令默认情况下隐藏

默认情况下隐藏的一条或多条命令。

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

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

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

(var1 + var2 + var3) / 3

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

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

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

影响程序状态的表达式

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

var1 = var2

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

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

Func1(var1)

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

说明:

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

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

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

说明:

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

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

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

    - 或 -

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

  2. 按 Enter。

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

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

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

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

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

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

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

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

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

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

  3. 单击“重新计算”。

请参见

任务

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

其他资源

变量窗口