快速入门:使用 Visual Studio 调试器调试 ASP.NET Core

Visual Studio 调试器提供了许多强大的功能以帮助调试应用。 本文提供了一种快速了解部分基本功能的方法。

创建新项目

  1. 打开 Visual Studio。

    如果开始窗口未打开,请选择“文件”>“开始窗口” 。

  2. 在“开始”窗口上,选择“创建新项目” 。

  3. “创建新项目”窗口中,在搜索框中键入“Web 应用”。 接下来,从语言列表中选择 C#。 选择 ASP.NET 核心 Web 应用 (Razor Pages) 模板,并按照步骤创建项目。

    如果未看到 ASP.NET 核心 Web 应用 (Razor Pages) 项目模板,请转到“工具”>“获取工具和功能...”,这将打开 Visual Studio 安装程序。 选择“ASP.NET 和 web 开发”工作负载,然后选择“修改” 。

    Visual Studio 随即创建项目。

  4. 在解决方案资源管理器中,打开 Privacy.cshtml(Pages 下)并替换以下代码:

    @{
     ViewData["Title"] = "Privacy Policy";
    }
    

    替换为以下代码:

    @{
     ViewData["Title"] = "Privacy Policy";
     <label>@PrivacyModel.PrivacyMessage</label>
    }
    
  5. 在解决方案资源管理器中,打开 Privacy.cshtml.cs(Pages/Privacy.cshtml 下)并替换以下代码。

    public void OnGet()
    {
    }
    

    替换为以下代码:

    
    public static string? PrivacyMessage { get; set; }
    
    public void OnGet()
    {
       LinkedList<int> result = DoWork();
       PrivacyMessage = "Result of work: " + result.First.Value + ", " + result.First.Value;
    }
    
    private static LinkedList<int> DoWork()
    {
       LinkedList<int> c1 = new();
    
       c1.AddLast(10);
       c1.AddLast(20);
    
       LinkedList<int> c2 = new(c1);
    
       return c2;
    
    }
    

设置断点

断点是一个标记,指示 Visual Studio 应在哪个位置挂起运行的代码,以查看变量的值或内存的行为,或确定代码的分支是否运行。 它是调试中最基本的功能。

  1. 若要设置断点,请单击 DoWork 函数左侧的滚动条槽(或选择代码行,然后按 F9)

    Set a breakpoint

    断点设置在左大括号的左侧 ({)。

  2. 现在,按 F5(或选择“调试”>“开始调试”)。

  3. 在网页加载后,选择网页顶部的“隐私”链接。

    调试器会在设置断点的位置暂停。 黄色箭头标识调试程序和应用程序执行发生暂停的语句。 尚未执行在 DoWork 函数声明之后带左大括号 ({) 的那一行。

    Hit a breakpoint

    提示

    如果循环或递归中存在断点,或者如果有许多频繁单步执行的断点,请使用条件断点以确保代码仅在满足特定条件时挂起。 条件断点可以节省时间,还可以更容易地调试难以重现的问题。

有不同的命令来指示调试器继续。 我们将演示自 Visual Studio 2017 开始新增的一个有用的代码导航命令。

当代码在断点处暂停时,将鼠标悬停在 return c2 语句上,直至绿色的“运行到单击处”按钮 Run to Click 出现,然后按“运行到单击处”按钮。

Run to click

应用将继续执行,并于你在其中单击按钮的代码行上暂停。

用于单步执行代码的常见键盘命令包括 F10 和 F11。 如需获取更多详尽介绍,请参阅初探调试器

检查数据提示中的变量

  1. 在当前代码行中(由黄色执行指针标记),将鼠标悬停在 c2 对象上以显示数据提示。

    View a datatip

    数据提示显示 c2 变量的当前值且允许检查其属性。 调试时,如果出现意外值,则表示在前一代码行或调用的代码行上出现 bug。

  2. 展开数据提示以查看 c2 对象的当前属性值。

  3. 如果要固定数据提示,以便在执行代码时可以继续查看 c2 的值,请单击小图钉图标。 (可将固定的数据提示移动到方便的位置。)

后续步骤

在本教程中,你已了解了如何启动调试器、逐步执行代码以及检查变量。 你可能想要大致了解调试器功能并获取指向详细信息的链接。