在 Visual Studio 中进行调试的基础知识

已完成

调试基础知识

编写代码很难做到无错误。 可使用 Visual Studio 查找项目中的 bug。

简单调试

向项目添加 print 语句以查看代码的执行方式。 Bug 通常是由无法有效执行的代码引起的。 使用此方法对较小的项目进行简单的调试。 除了简单的项目外,不推荐使用此方法。

print 语句添加到通用 Windows 平台 (UWP) 项目:

  1. 在“解决方案资源管理器”中,展开 MainPage.xaml,然后单击 MainPage.xaml.cs。

    Visual Studio 解决方案资源管理器的屏幕截图。其中突出显示了 MainPage.xaml.cs 文件。

    此处的 C# 代码与应用中显示的窗口相关联。

  2. 在“编辑器窗口”中向下滚动,直到找到以下代码:

    public MainPage()
    {
      this.InitializeComponent();
    }
    

    将其更改为以下代码:

    public MainPage()
    {
      this.InitializeComponent();
      Hello();
    }
    
    public void Hello()
    {
      System.Diagnostics.Debug.WriteLine("Hello!");
    }
    

    “编辑器窗口”应如下所示:

    Visual Studio 中编辑器窗口的屏幕截图。其中显示了来自上面的 writeline 步骤的示例代码。

  3. 单击“运行”按钮(或按 F5 键)运行项目。

    显示 Visual Studio 菜单栏的屏幕截图。其中突出显示了以绿色三角形表示的运行按钮。

  4. 最小化应用窗口,返回到 Visual Studio。 单击“输出”以查看应用创建的“Hello!”消息。

    显示 Visual Studio 输出窗口的屏幕截图,其中显示了“Hello!”消息。

    注意

    还可以在 Windows Presentation Foundation (WPF) 和 Windows 窗体应用中显示调试文本。

  5. 单击“停止”按钮以停止应用。

    显示 Visual Studio 菜单栏的屏幕截图。其中突出显示了以红色方块表示的停止按钮。

优化调试

使用断点在特定点停止应用,以了解发生的状况。 让我们看看它的工作原理。

  1. 更新 Hello() 函数以匹配此代码:

    public void Hello()
    {
      int a = 1;
      int b = 2;
      int c = a + b;
    
      if (c == 4)
      {
          // Success
      }
      else
      {
          // Fail
      }
    }
    

    “编辑器窗口”应如下所示:

    Visual Studio 中编辑器窗口的屏幕截图。其中显示了来自上述断点步骤的示例代码。

    说明:应用程序需要 4 的值来执行 Hello() 函数。 遗憾的是,在这种情况下,a + b 不等于 c。 让我们检查使用断点执行此计算的行。

  2. 在屏幕最左侧的灰色边距内单击,在包含代码 int c = a + b; 的行旁边。 将显示一个红点。 这个点就是断点。

    Visual Studio 编辑器窗口的屏幕截图。边距处已放置断点(红色圆圈)。

  3. 单击“运行”按钮(或按 F5)再次启动应用。

    显示 Visual Studio 菜单栏的屏幕截图。其中突出显示了以绿色三角形表示的运行按钮。

    应用立即停止运行。 边距内会出现一个黄色的小箭头,在包含错误的行旁边。 突出显示的代码行是接下来将运行的代码行。

    Visual Studio 编辑器窗口的屏幕截图。黄色箭头显示在边距的断点内。

    当程序暂停时,可使用工具栏上的“单步执行”、“单步跳过”和“单步跳出”按钮逐行单步调试程序。

    Visual Studio 菜单栏的屏幕截图。其中突出显示了“单步执行”、“单步跳过”和“单步跳出”选项。

  4. 选择“单步执行”,并观察黄色箭头随控制流的变化情况。

    Visual Studio 菜单栏的屏幕截图。其中突出显示了“单步执行”选项。

  5. 将鼠标悬停在变量 c 之上。

    Visual Studio 编辑器窗口的屏幕截图。一个弹出窗口显示鼠标悬停的位置。它指示 c 的值为 3。

    此时会显示一个窗口以显示变量的当前值。 正如我们所知,该值为 3,而不是函数预期的 4。

  6. 将鼠标悬停在右大括号附近,直到出现绿色箭头。

    Visual Studio 编辑器窗口的屏幕截图。鼠标悬停处显示一个绿色箭头。

    此断点允许应用运行,直到到达包含行。

  7. 单击“停止”按钮停止运行应用。

    显示 Visual Studio 菜单栏的屏幕截图。其中突出显示了以红色方块表示的停止按钮。

调试理念

简单介绍一下调试。 了解你掌握的工具是成功的一半。 理解为什么有些内容不起作用需要经验、耐心和(偶尔)运气。 使用这些提示调试代码:

  • 需要明确的是,代码完全在按照你的要求执行操作。 你只是要求代码执行了错误的操作。
  • 向朋友(甚至是你自己)逐行解释你的代码。 大声说出来会有所帮助。
  • 将代码分解为更小的部分(一种重构形式),以确认每个部分是否都能正常运行。
  • 有时休息一下,理清思绪会有所帮助。