• Visual Studio 调试系列6 监视变量(使用监视窗口和快速监视窗口)


    当你进行调试时,可以使用 监视窗口快速监视窗口 来监视变量和表达式。 仅在调试会话期间,这两个窗口才可用。

    监视窗口可以在调试时一次显示多个变量。 快速监视对话框一次仅显示单个变量,并可以继续调试之前,必须关闭。

    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();
    }
    1. 在c = a + b;行设置断点,按F9。

    2. 开始调试通过选择绿色启动箭头或调试 > 开始调试,或按F5。 在断点处暂停执行。

    3. 打开监视窗口,通过选择窗口调试 > Windows > 监视 > 观看 1,或按Ctrl+Alt+W > 1.

      可以打开其他Watch窗口中的,选择 windows 2, 3,或者4。

    4. 在监视窗口中,选择空的行,并编辑写入类型变量a。 执行相同操作bc

    5. 继续进行调试,通过选择调试 > 单步执行或按F11根据需要以继续。 for循环多次执行时,a b c 的值分别发生变化。

             

    02 在监视窗口中使用表达式

    在监视窗口中,可以使用任何有效的表达式以计算其值。

    例如,对于前面部分中的代码,可以获取三个值的平均值通过输入(a + b + c) / 3,观看窗口:

    在监视窗口中计算表达式的规则通常与代码中的语言表达式的计算规则相同。 如果表达式具有语法错误,出现相同的编译器错误,如代码编辑器中所示。 例如,在上述表达式中的有拼写错误生成中的出现此错误监视窗口:

    监视窗口中可能会显示一个带有两个波浪条纹图标圆圈。 此图标表示调试器会计算该表达式,因为潜在的跨线程依赖关系。 计算代码需要暂时,运行您的应用程序中的其他线程,但由于在中断模式下,应用程序中的所有线程通常已都停止。 允许其他线程暂时运行可能对您的应用程序和调试器的状态的意外的影响可以忽略断点和这些线程上的异常等事件。

    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 观察单个变量或使用快速监视表达式
     可以使用快速监视观察单个变量。

     在表达式文本框中输入新的表达式,点击【重新计算】

  • 相关阅读:
    nodejs MYSQL数据库执行多表查询
    【BZOJ3994】[SDOI2015]约数个数和 莫比乌斯反演
    【BZOJ2693】jzptab 莫比乌斯反演
    【BZOJ2154】Crash的数字表格 莫比乌斯反演
    【BZOJ2242】[SDOI2011]计算器 BSGS
    【BZOJ2005】[Noi2010]能量采集 欧拉函数
    【BZOJ1408】[Noi2002]Robot DP+数学
    【BZOJ2045】双亲数 莫比乌斯反演
    【BZOJ2186】[Sdoi2008]沙拉公主的困惑 线性筛素数
    【BZOJ4176】Lucas的数论 莫比乌斯反演
  • 原文地址:https://www.cnblogs.com/SavionZhang/p/11268472.html
Copyright © 2020-2023  润新知