使用 Source Link 调试 Bootstrap Blazor 开源组件库

前言

喜欢 Bootstrap Blazor 组件库的小伙伴们在日常开发过程中常常会遇到一些问题,非常想对 Bootstrap Blazor 组件库进行代码调试,是否有一种简单的办法让我们不需要项目引用 Bootstrap Blazor 的情况下就可以逐语句调试呢?答案就是 Source Link

Source Link 是开发人员的一项生产力功能,它允许在编译过程中将有关程序集原始源代码的唯一信息嵌入到PDB中的一组软件包和规范。通过 SourceLink 添加到 PDB 文件中的元数据,和本地源代码文件、仓库内的代码文件建立了一个映射关系。因此 Visual Studio 调试时可以在需要时下载文件, 并为用户提供源代码调试, Microsoft库(例如.NET Core和Roslyn)都已启用Source Link。

开源地址:https://github.com/dotnet/sourcelink

我们本地开发时传统的调试模式还是通过引用源代码的方式进行代码调试,这使的我们很难调试没有源代码的第三方组件库。我们可以通过 Source Link 在无需源码的情况下获得极佳的调试体验。

配置 Visual Studio IDE 工具

步骤 1 - 配置 NuGet.org 符号源

默认情况下,NuGet.org 符号源未启用。为了让 SourceLink 正常工作,Visual Studio 需要能够下载这些源代码,因此我们必须先进行设置。

在 Visual Studio 中,转到 工具–>选项–>调试–>符号:

使用 Source Link 调试 Bootstrap Blazor 开源组件库

确保选中“NuGet.org 符号服务器”选项。

步骤 2 - 禁用 “仅我的代码”

接下来,我们需要转到 工具–>选项–>调试–>常规设置窗口并禁用“仅我的代码”选项:

使用 Source Link 调试 Bootstrap Blazor 开源组件库

步骤 3 - 启用源服务器和源链接支持

默认情况下,Visual Studio 中已启用 SourceLink 支持,但未启用源服务器支持。

再次,转到 工具->选项->调试->常规设置窗口并进行以下更改:

使用 Source Link 调试 Bootstrap Blazor 开源组件库

配置完毕,我们开始进入调试之旅

调试组件

新建工程引用 Bootstrap Blazor 组件包,后开始进行调试

使用 Source Link 调试 Bootstrap Blazor 开源组件库

命中断点后,按 Ctrl + Alt + U 快捷键,调出 Modules 窗口

使用 Source Link 调试 Bootstrap Blazor 开源组件库

从 Modules 窗口通过 Name 排序后可以看到我们要调试的 Bootstrap Blazor 组件包并未加载 PDB 文件,此时我们点击右键如图所示,选择 Load Symbols 根据每个人的网络情况会有一些延时,此时 Visual Studio 会从 Nuget.org 上下载组件包所需的 PDB 文件,下载完毕后,我们按 F11 (逐行调试)弹出对话框如下:

此时由于本地仅有刚刚下载的 PDB 文件,必须有源代码才可以进行逐行调试,所以弹出对话框请求下载源代码并调试,即可以进入到组件包内

使用 Source Link 调试 Bootstrap Blazor 开源组件库

使用 Source Link 调试 Bootstrap Blazor 开源组件库

设置命中断点

在我们的日常调试中更多的时候是对源码进行断点,程序运行时命中断点,我们进行调试。使用 Source Link 后我们能否设置源代码断点呢?当然是可以的,上面的方法是需要哪个源码就下载哪个源码,其实是非常不方便的。我们可以一次性把所有源码下载下来,自己根据需求来打开源码文件进行断点设置,如果所示操作,解压缩所有源码

使用 Source Link 调试 Bootstrap Blazor 开源组件库

设置解决方案显示其他项目

使用 Source Link 调试 Bootstrap Blazor 开源组件库

  • Azure Repos / DevOps
  • GitLab
  • BitBucker
  • Github

总结

本文以 Bootstrap Blazor 组件库为例讲解了如何通过 Source Link 进行第三方包调试,其他已发布 snupkg 的第三方组件包同样可以调试,包括微软的 asp.net core 框架相关代码

使用 Source Link 调试 Bootstrap Blazor 开源组件库

上一篇:ROS建图后第二次规划路径时无法显示costmap的解决办法


下一篇:IDA Pro 快速入门(一)