使用 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 文档,了解详细信息。
硬调试器(例如 LLDB 或 GDB)不需要调试程序方面的知识或配合,即可控制程序。 如果需要调试本机 iOS 或 Android 代码,它仍非常适用于调试 Xamarin 应用程序。
对于 .NET Core 和 ASP.NET Core 应用程序,Visual Studio for Mac 使用 .NET Core 调试器。 此调试器也是协作式调试器,适用于 .NET 运行时。
使用调试器
若要开始调试应用程序,请始终确保将配置设置为“调试”。 调试配置提供一组实用工具来支持调试,如断点、使用数据可视化工具和查看调用堆栈:
设置断点
若要在 IDE 中设置断点,请在想要中断的代码行号旁边,单击编辑器的空白区:
可转到“断点”窗口,查看代码中已设置的所有断点:
“启动调试”
若要开始调试,请选择目标浏览器、设备或模拟器/仿真器:
然后通过按“播放”按钮或“Cmd + 返回”部署应用程序。 命中断点时,代码会以黄色突出显示:
此时,可使用调试工具(如用于检查对象的值的工具)获取代码中所发生情况的相关详细信息:
条件断点
还可以设置规则,规定应该发生断点的情况。 这称为添加条件断点。 若要设置条件断点,请访问“断点属性”窗口,可通过以下两种方式实现此操作:
- 若要添加新的条件断点,请右键单击编辑器边缘(即要设置断点的代码行号左侧),再选择“新建断点”:
- 若要向现有断点添加条件,请右键单击该断点并选择“断点属性”,或如下图所示在“断点”窗口中选择“编辑断点”按钮:
然后可输入想要断点发生的条件:
逐句通过代码
到达断点时,调试工具使用户能够控制该程序的执行。 Visual Studio for Mac 将显示四个按钮,使用户能够逐行运行代码。 在 Visual Studio for Mac 中,它们将显示如下:
以下是四个按钮:
- 播放 - 此按钮开始执行代码,直至下一个断点处。
- 单步跳过 - 此按钮执行下一行代码。 如果下一行是函数调用,“单步跳过”将执行该函数,并在该函数后的下一行代码停止。
- 单步执行 - 此按钮也执行下一行代码。 如果下一行是函数调用,“单步执行”将在该函数的第一行停止,允许继续进行函数的逐行调试。 如果下一行不是函数,其行为与“单步跳过”相同。
- 跳出 - 此按钮返回到调用当前函数的代码行。
更改要执行的下一条语句
调试器暂停时,边距中的箭头会显示下一条要执行的代码行。 可以选择箭头并将其拖至不同的代码行,以更改将执行的语句。 还可以通过右键单击代码行,然后从上下文菜单中选择“设置下一条语句”来实现同一操作。
注意
更改当前执行行可能会导致应用程序中出现意外行为。 在某些情况下,无法更改要执行的下一条语句。 例如,无法将箭头从一个方法拖动到另一个方法。 在这些不受支持的情况下,Visual Studio for Mac 将显示一个对话框,告知你无法更改当前执行行。
调试 Mono 类库
Xamarin 产品随附用于 Mono 类库的源代码,可使用此代码在调试器中单步执行,查看内部工作原理。
由于此功能在调试过程中会占用更多内存,因此默认禁用。
若要启用此功能,请浏览到“Visual Studio for Mac”>“首选项”>“调试器”,并确保“单步执行外部代码”为“选中”状态,如下所示: