使用 Source Link 調試 Bootstrap Blazor 開源組件庫


大家好,我是本期的實驗室研究員——【張廣坡】。今天我將通過實驗和完整的操作過程,向大家介紹【如何使用 Source Link 調試 Bootstrap Blazor 開源組件庫】。接下來就讓我們一起到實驗室中一探究竟吧!

思路淺析

當我們使用第三方組件包的時候,尤其是遇到小問題的時候,特別想通過逐步調試進入到某個方法內部去看看其具體邏輯,這樣做會給我們帶來極大的便利,然后現實非常殘酷,我們在一無源代碼二無 PDB 的情況下想要實現逐步調試是不可能的任務。那么我們如何才能逐步調試第三方組件包呢?

通過本次實現,我們以第三方 Bootstrap Blazor 組件包為例,通過 Source Link 對此組件包進行逐步調試

前言

喜歡 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 中,轉到 工具–>選項–>調試–>符號:

確保選中“NuGet.org 符號服務器”選項。

步驟 2 - 禁用 “僅我的代碼”

接下來,我們需要轉到 工具–>選項–>調試–>常規設置窗口並禁用“僅我的代碼”選項:

步驟 3 - 啟用源服務器和源鏈接支持

默認情況下,Visual Studio 中已啟用 SourceLink 支持,但未啟用源服務器支持。

再次,轉到 工具->選項->調試->常規設置窗口並進行以下更改:

配置完畢,我們開始進入調試之旅

調試組件

新建工程引用 Bootstrap Blazor 組件包,后開始進行調試

命中斷點后,按 Ctrl + Alt + U 快捷鍵,調出 Modules 窗口

從 Modules 窗口通過 Name 排序后可以看到我們要調試的 Bootstrap Blazor 組件包並未加載 PDB 文件,此時我們點擊右鍵如圖所示,選擇 Load Symbols 根據每個人的網絡情況會有一些延時,此時 Visual Studio 會從 Nuget.org 上下載組件包所需的 PDB 文件,下載完畢后,我們按 F11 (逐行調試)彈出對話框如下:

此時由於本地僅有剛剛下載的 PDB 文件,必須有源代碼才可以進行逐行調試,所以彈出對話框請求下載源代碼並調試,即可以進入到組件包內

設置命中斷點

在我們的日常調試中更多的時候是對源碼進行斷點,程序運行時命中斷點,我們進行調試。使用 Source Link 后我們能否設置源代碼斷點呢?當然是可以的,上面的方法是需要哪個源碼就下載哪個源碼,其實是非常不方便的。我們可以一次性把所有源碼下載下來,自己根據需求來打開源碼文件進行斷點設置,如果所示操作,解壓縮所有源碼

設置解決方案顯示其他項目

  • Azure Repos / DevOps
  • GitLab
  • BitBucker
  • Github

總結

本文以 Bootstrap Blazor 組件庫為例講解了如何通過 Source Link 進行第三方包調試,其他已發布 snupkg 的第三方組件包同樣可以調試,包括微軟的 asp.net core 框架相關代碼

Bootstrap Blazor

  1. https://github.com/dotnetcore/BootstrapBlazor
  1. https://docs.microsoft.com/en-us/dotnet/standard/library-guidance/sourcelink
  2. https://devblogs.microsoft.com/dotnet/producing-packages-with-source-link/

Github

  1. https://github.com/dotnet/sourcelink/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM