本文介绍分步演练中 Visual Studio 调试器的功能。 如果想要更高级别的调试器功能视图,请参阅 [color=var(--theme-hyperlink)]Visual Studio 调试器的概述。 调试应用时,这通常意味着使用附加的调试器运行应用程序。 当你执行该任务时,调试器提供多种方式让你查看代码的运行过程。 - 单步执行代码并查看变量中存储的值。
- 设置对变量的监视,以查看值何时发生更改。
- 检查代码的执行路径,以查看代码分支是否正在运行。
如果这是你第一次尝试调试代码,你可能想要阅读 [color=var(--theme-hyperlink)]针对绝对初学者的调试指南。 尽管本文中的演示应用使用 Visual Basic,但大多数功能都适用于 Visual Studio 支持的 C#、C++、F#、Python、JavaScript 和其他语言。 F# 不支持“编辑并继续”。 F# 和 JavaScript 不支持 “自动” 窗口。 屏幕截图位于 Visual Basic 中。 在本教程中,你将了解: - 启动调试器并触发断点
- 了解在调试器中逐步执行代码的命令
- 检查数据提示和调试器窗口中的变量
- 检查调用堆栈
先决条件
必须安装 Visual Studio,包括 .NET Core 跨平台开发 工作负载。 。如果需要安装工作负载但已有 Visual Studio,请转到 “工具>获取工具和功能...”,这将打开 Visual Studio 安装程序。 选择 .NET 桌面开发工作负载,然后选择修改。
创建项目
首先,创建 .NET Core 控制台应用程序项目。 在你添加任何内容之前,项目类型就已经附带了所有所需的模板文件! 打开 Visual Studio。 如果启动窗口未打开,请选择“ 文件>开始窗口”。 在“开始”窗口中,选择“创建新项目”。 在“ 创建新项目 ”窗口中的搜索框中,输入 控制台。 接下来,从语言列表中选择 Visual Basic ,然后从平台列表中选择 Windows 。 应用语言和平台筛选器后,选择 .NET Core 的 控制台应用 模板,然后选择“ 下一步”。 [color=var(--theme-text)][backcolor=var(--theme-info-background)][color=var(--theme-info-dark)] 注意 如果未看到 控制台应用 模板,可以从 创建新项目 窗口安装它。 在 “未找到要查找的内容?” 消息中,选择“ 安装更多工具和功能 ”链接。 然后,在 Visual Studio 安装程序中,选择 .NET 桌面开发 工作负载。
在 “配置新项目 ”窗口中,对于 “项目名称”,输入 “开始调试”。 然后选择下一步。 在“其他信息”窗口中,确保为 Framework 选择了 .NET 10.0,然后选择“创建”。
Visual Studio 打开了你的新项目。 创建应用程序
在 Program.vb中,将所有默认代码替换为以下代码: [backcolor=var(--theme-code-header)][size=0.875]VB[size=0.875em]复制
Imports SystemClass ArrayExample Public Shared Sub Main() Dim letters As Char() = {"f"c, "r"c, "e"c, "d"c, " "c, "s"c, "m"c, "i"c, "t"c, "h"c} Dim name As String = "" Dim a As Integer() = New Integer(9) {} For i As Integer = 0 To letters.Length - 1 name += letters(i) a(i) = i + 1 SendMessage(name, a(i)) Next Console.ReadKey() End Sub Private Shared Sub SendMessage(ByVal name As String, ByVal msg As Integer) Console.WriteLine("Hello, " & name & "! Count to " & msg) End SubEnd Class启动调试器!
复制
Hello, f! Count to 1Hello, fr! Count to 2Hello, fre! Count to 3Hello, fred! Count to 4Hello, fred ! Count to 5Hello, fred s! Count to 6Hello, fred sm! Count to 7Hello, fred smi! Count to 8Hello, fred smit! Count to 9Hello, fred smith! Count to 10在本教程中,你将使用调试器仔细了解此应用,并查看调试器功能。 通过按 (Shift + F5) 或选择调试工具栏中的红色 “停止调试 ”按钮来停止调试器。 在控制台窗口中,按键关闭控制台窗口。
设置断点并启动调试器
在 For 函数的 Main 循环中,通过单击下面代码行左侧边距来设置断点: name += letters(i) 此时会显示一个红色圆圈,可在其中设置断点。 断点是可靠调试的最基本和最重要功能之一。 断点指示 Visual Studio 在哪里暂停正在运行的代码。 暂停时,可以查看变量的值或内存的行为。 可以查看代码分支是否运行。 按 F5 (调试 > 开始调试)或调试工具栏中的 “开始调试 ”按钮。 应用启动,然后调试器运行到您设置断点的代码行。 黄色箭头表示调试器暂停的语句,该语句也会在同一点暂停应用执行。 尚未执行此语句。 如果应用尚未运行, F5 将启动调试器并在第一个断点处停止。 否则, F5 将继续将应用运行到下一个断点。 当您知道代码行或要详细检查的代码部分时,断点是一项有用的功能。 有关不同类型的断点的信息,请参阅 [color=var(--theme-hyperlink)] “使用断点”。
在调试器中使用步进命令导航代码
本文使用键盘快捷方式,因为它是在调试器中快速执行应用的好方法。 它在括号中显示等效的命令,例如菜单命令。 暂停代码执行于For方法的Main循环时,按F11(或选择“调试>单步进入”)两次,以进入SendMessage方法调用。 按 F11 两次后,您应该看到这行代码: SendMessage(name, a(i)) 再按 F11 一次即可单步进入 SendMessage 方法。 黄色指针前进到 SendMessage 方法中。 F11 是 “进入” 命令。 它逐步执行应用程序,每次一个语句。 F11 是最详细地检查执行流的好方法。 默认情况下,调试器跳过非用户代码。 有关详细信息,请参阅[color=var(--theme-hyperlink)] 仅我的代码。 假设你已检查方法 SendMessage ,并且想要退出该方法,但继续在调试器中停留。 可以使用 “单步出” 命令执行此操作。 按 Shift + F11 (或 调试 > 退出)。 此命令将恢复应用执行,并推进调试器,直到当前方法或函数返回。 应返回到For循环中的Main方法,并在调用SendMessage方法时暂停。 多次按 F11 ,直到再次返回到 SendMessage 方法调用。 在方法调用中暂停代码执行时,请按 F10 (或选择 “调试 > 单步执行”)一次。 这一次,调试器不会单步进入 SendMessage 方法。 F10 在不单步执行应用代码中的函数或方法的情况下推进调试器。 代码仍在执行。 通过在方法调用时按F10而不是F11,跳过了对SendMessage的实现代码。 有关在代码中进行移动的不同方法的详细信息,请参阅[color=var(--theme-hyperlink)] 浏览调试器中的代码。
使用“运行到单击”功能导航代码
按 F5 再次转到断点。 在代码编辑器中,向下滚动并将鼠标悬停在 Console.WriteLine 方法中的 SendMessage 方法上,直到出现绿色的 Run to Click 按钮。 按钮的工具提示显示 运行执行至此。 单击 “运行到单击” 按钮。 调试器跳转到Console.WriteLine方法。 使用此按钮类似于设置临时断点。 运行到点击 可帮助你在应用代码的可视区域内快速导航,你可以在任何打开的文件中选择这一功能。
快速重启应用
若要重启应用,请按 Ctrl + Shift + F5 组合键。 它可节省时间,而不是停止应用并重启调试器。 调试器在执行代码命中的第一个断点处暂停。 调试器会在之前在循环中设置的 For 断点处再次停止。
使用数据提示检查变量
调试器具有可用于检查变量的功能。 可通过不同的方法来检查变量。 通常,当你尝试调试问题时,你正尝试找出变量是否存储期望它们在特定时间拥有的值。 在 name += letters 语句暂停代码执行时,将鼠标悬停在 letters 变量上。 可以看到其默认值,即数组 "f"c中第一个元素的值。 接下来,将鼠标悬停在 name 变量上以查看其当前值(一个空字符串)。 按 F5 (或 调试>继续)多次循环访问 For 循环,在断点再次暂停,并每次将鼠标悬停在 name 变量上以检查其值。 变量的值随 For 循环的每个迭代而更改,其中显示了 f、fr、fre等值。 通常,在调试代码时,需要快速检查变量上的属性值,以查看它们是否存储期望它们存储的值。 数据提示是一种很好的方法。
使用“自动”和“局部变量”窗口检查变量
查看代码编辑器底部的 “自动” 窗口。 如果它已关闭,在调试器中暂停代码执行时,通过选择调试>Windows>Autos来打开它。 在 “自动” 窗口中,可以看到变量及其当前值。 自动窗口显示使用在当前行或上一行的所有变量。 请查阅文档以了解特定语言的行为。 接下来,在“自动”窗口旁边的选项卡中查看“局部变量”窗口。 展开 letters 变量以显示它包含的元素。 局部变量 窗口显示当前 [color=var(--theme-hyperlink)] 作用域(即当前执行上下文)中的变量。
设置监视
可以将变量或表达式添加到“监视”窗口,以在单步执行代码时监控这些变量或表达式。 暂停调试器时,右键单击 name 该变量并选择 “添加监视”。 默认情况下, “监视 ”窗口将在代码编辑器底部打开。 现在,你已对name变量设置了监视,请逐步执行代码,以查看name变量在每次for循环迭代时值更改。 与其他变量窗口不同,监视 窗口始终显示正在监视的变量。 作用域外变量显示为不可用。
有关 监视窗口 的详细信息,请参阅 [color=var(--theme-hyperlink)] 使用监视窗口监视变量。
检查调用堆栈
在循环中 For 暂停代码执行时,请选择“ 调用堆栈 ”窗口,该窗口默认在右下窗格中打开。 如果它已关闭,请在调试器中暂停代码执行时打开它,方法是选择 “调试>Windows>调用堆栈”。 选择 F11 几次,直到看到调试器在 SendMessage 方法中暂停。 查看 “调用堆栈” 窗口。 调用堆栈 窗口显示调用方法和函数的顺序。 最上面一行显示当前函数。 在此示例中,它是 SendMessage 方法。 第二行显示 SendMessage 方法是从 Main 方法调用的,依此类推。 [color=var(--theme-text)][backcolor=var(--theme-info-background)][color=var(--theme-info-dark)] 注意 调用堆栈窗口类似于 Eclipse 等编程工具中的调试视图。
调用堆栈是检查和了解应用执行流的好方法。 可以双击一行代码来查看该源代码,并更改调试器正在检查的当前范围。 此动作没有推进调试过程。 还可以使用 调用堆栈 窗口中的右键单击菜单来执行其他操作。 例如,您可以将断点插入到指定的函数中,使用 运行到光标 来推进调试器,然后检查源代码。 有关详细信息,请参阅 [color=var(--theme-hyperlink)] “如何:检查调用堆栈”。
更改执行流
按 F11 两次运行 Console.WriteLine 该方法。 在调试器暂停于 SendMessage 方法调用时,使用鼠标抓住左边距的黄色箭头或运行指针,将它向上拖动到 Console.WriteLine 语句所在的一行。 按 F11。 调试器重新运行 Console.WriteLine 该方法。 您会在控制台窗口的输出中看到此操作。 通过更改执行流,可以测试不同的代码执行路径或重新运行代码,而无需重启调试器。 [color=var(--theme-text)][backcolor=var(--theme-warning-background)][color=var(--theme-warning-dark)] 警告 通常,需要注意此功能。 工具提示中存在警告。 您可能还会看到其他警告。 移动指针无法将应用程序还原到以前的应用状态。
按 F5 继续运行应用。 祝贺你完成本教程!
相关内容
本教程介绍了如何启动调试器、逐步执行代码和检查变量。 你可能想要大致了解调试器功能以及指向详细信息的链接。
|