当你进行调试时,可以使用 监视窗口 和 快速监视窗口 来监视变量和表达式。 仅在调试会话期间,这两个窗口才可用。
监视窗口可以在调试时一次显示多个变量。 快速监视对话框一次仅显示单个变量,并可以继续调试之前,必须关闭。
01 观察使用监视窗口变量
示例代码:
private static void Main(string[] args)
{
int a, b, c;
a = 1;
b = 2;
c = 0;
for (int i = 0; i < 10; i++)
{
a++;
b *= 2;
c = a + b;
}
Console.WriteLine("Press any key to exit."); // 在调试模式下保持控制台打开
Console.ReadKey();
}
在c = a + b;行设置断点,
按F9。a
。 执行相同操作b
和c
。for
循环多次执行时,a b c 的值分别发生变化。02 在监视窗口中使用表达式
在监视窗口中,可以使用任何有效的表达式以计算其值。
例如,对于前面部分中的代码,可以获取三个值的平均值通过输入(a + b + c) / 3,
观看窗口:
在监视窗口中计算表达式的规则通常与代码中的语言表达式的计算规则相同。 如果表达式具有语法错误,出现相同的编译器错误,如代码编辑器中所示。 例如,在上述表达式中的有拼写错误生成中的出现此错误监视窗口:
监视窗口中可能会显示一个带有两个波浪条纹图标圆圈。 此图标表示调试器会计算该表达式,因为潜在的跨线程依赖关系。 计算代码需要暂时,运行您的应用程序中的其他线程,但由于在中断模式下,应用程序中的所有线程通常已都停止。 允许其他线程暂时运行可能对您的应用程序和调试器的状态的意外的影响可以忽略断点和这些线程上的异常等事件。
03 在监视窗口中搜索
该功能请参考《Visual Studio 调试系列5 检查变量(使用自动窗口和局部变量窗口)》03 在自动或局部变量。完成相同。
04 在监视窗口中使用对象 Id (C#和 Visual Basic)
该功能请参考《Visual Studio 调试系列3 断点》在条件表达式中使用对象 Id (C#和F#仅)。基本相同。
05 动态视图和监视窗口
一些脚本语言(例如,javascript或python)使用动态或duck类型,并且.NET 4.0及更高版本支持在正常调试窗口中难以观察到的对象。
示例程序:
private static void Main(string[] args)
{
dynamic student = new { Name = "张三", Age = 25, Sex = "男" };
Console.WriteLine("Name:" + student.Name);
Console.WriteLine("Age:" + student.Age);
Console.WriteLine("Sex:" + student.Sex);
Console.WriteLine("Press any key to exit."); // 在调试模式下保持控制台打开
Console.ReadKey();
}
监视窗口中显示这些对象作为动态对象,从实现的类型创建 IDynamicMetaObjectProvider 接口。
动态对象节点显示动态成员的动态对象,但不允许编辑成员值。下面3个窗口中都无法编辑成员值。
06 观察单个变量或使用快速监视表达式
可以使用快速监视观察单个变量。
在表达式文本框中输入新的表达式,点击【重新计算】