使用 Visual Studio for Mac 调试

重要

根据 Microsoft 的新式生命周期策略,Visual Studio for Mac 计划于 2024 年 8 月 31 日停用。 虽然你可以继续使用 Visual Studio for Mac,但 Mac 上的开发人员还可以使用其他几个选项,例如适用于 VS Code 的新 C# 开发工具包扩展的预览版本。

详细了解支持时间表和替代方案

Visual Studio for Mac 提供支持 .NET Core、.NET Framework、Unity 和 Xamarin 应用程序的调试器。

Visual Studio for Mac 使用 Mono 软调试器,该调试器在 Mono 运行时中实施,以便 Visual Studio for Mac 跨所有平台调试托管代码。

调试器

Visual Studio for Mac 使用 Mono 软调试器来调试所有 Xamarin 应用程序中的托管(C# 或 F#)代码。 Mono 软调试器不同于常规调试器,因为它是内置于 Mono 运行时的协作式调试器;生成的代码和 Mono 运行时与 IDE 协作提供调试体验。 Mono 运行时通过网络协议公开调试功能,可以阅读 Mono 文档,了解详细信息。

硬调试器(例如 LLDBGDB)不需要调试程序方面的知识或配合,即可控制程序。 如果需要调试本机 iOS 或 Android 代码,它仍非常适用于调试 Xamarin 应用程序。

对于 .NET Core 和 ASP.NET Core 应用程序,Visual Studio for Mac 使用 .NET Core 调试器。 此调试器也是协作式调试器,适用于 .NET 运行时。

使用调试器

若要开始调试应用程序,请始终确保将配置设置为“调试”。 调试配置提供一组实用工具来支持调试,如断点、使用数据可视化工具和查看调用堆栈:

Debug configuration

设置断点

若要在 IDE 中设置断点,请在想要中断的代码行号旁边,单击编辑器的空白区:

Setting breakpoint in margin

可转到“断点”窗口,查看代码中已设置的所有断点:

List of breakpoints

“启动调试”

若要开始调试,请选择目标浏览器、设备或模拟器/仿真器:

Debug configurationSelect target device

然后通过按“播放”按钮或“Cmd + 返回”部署应用程序。 命中断点时,代码会以黄色突出显示:

Highlight showing breakpoint has been hit

此时,可使用调试工具(如用于检查对象的值的工具)获取代码中所发生情况的相关详细信息:

Debug visualizations

条件断点

还可以设置规则,规定应该发生断点的情况。 这称为添加条件断点。 若要设置条件断点,请访问“断点属性”窗口,可通过以下两种方式实现此操作:

  • 若要添加新的条件断点,请右键单击编辑器边缘(即要设置断点的代码行号左侧),再选择“新建断点”:

Breakpoint context menu

  • 若要向现有断点添加条件,请右键单击该断点并选择“断点属性”,或如下图所示在“断点”窗口中选择“编辑断点”按钮:

Edit existing Breakpoint in Breakpoints Window

然后可输入想要断点发生的条件:

Edit Breakpoint conditions

逐句通过代码

到达断点时,调试工具使用户能够控制该程序的执行。 Visual Studio for Mac 将显示四个按钮,使用户能够逐行运行代码。 在 Visual Studio for Mac 中,它们将显示如下:

Buttons to step through code

以下是四个按钮:

  • 播放 - 此按钮开始执行代码,直至下一个断点处。
  • 单步跳过 - 此按钮执行下一行代码。 如果下一行是函数调用,“单步跳过”将执行该函数,并在该函数后的下一行代码停止。
  • 单步执行 - 此按钮也执行下一行代码。 如果下一行是函数调用,“单步执行”将在该函数的第一行停止,允许继续进行函数的逐行调试。 如果下一行不是函数,其行为与“单步跳过”相同。
  • 跳出 - 此按钮返回到调用当前函数的代码行。

更改要执行的下一条语句

调试器暂停时,边距中的箭头会显示下一条要执行的代码行。 可以选择箭头并将其拖至不同的代码行,以更改将执行的语句。 还可以通过右键单击代码行,然后从上下文菜单中选择“设置下一条语句”来实现同一操作。

Drag and drop arrow to set next statement

注意

更改当前执行行可能会导致应用程序中出现意外行为。 在某些情况下,无法更改要执行的下一条语句。 例如,无法将箭头从一个方法拖动到另一个方法。 在这些不受支持的情况下,Visual Studio for Mac 将显示一个对话框,告知你无法更改当前执行行。

调试 Mono 类库

Xamarin 产品随附用于 Mono 类库的源代码,可使用此代码在调试器中单步执行,查看内部工作原理。

由于此功能在调试过程中会占用更多内存,因此默认禁用。

若要启用此功能,请浏览到“Visual Studio for Mac”>“首选项”>“调试器”,并确保“单步执行外部代码”为“选中”状态,如下所示:

Step into external code option

另请参阅