逐步除錯第三方元件包,用它就可以

微軟技術棧發表於2021-10-06

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

微軟MVP實驗室研究員

image.png

思路淺析

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

通過本次實現,我們以第三方 Bootstrap Blazor 元件包為例,通過 Source Link 對此元件包進行逐步除錯。

喜歡 Bootstrap Blazor 元件庫的小夥伴們在日常開發過程中常常會遇到一些問題,非常想對 Bootstrap Blazor 元件庫進行程式碼除錯,是否有一種簡單的辦法讓我們不需要專案引用 Bootstrap Blazor 的情況下就可以逐語句除錯呢?答案就是 Source Link。

什麼是Source Link

Source Link 是開發人員的一項生產力功能,它允許在編譯過程中將有關程式集原始原始碼的唯一資訊嵌入到PDB中的一組軟體包和規範。通過 SourceLink 新增到 PDB 檔案中的後設資料,和本地原始碼檔案、倉庫內的程式碼檔案建立了一個對映關係。因此 Visual Studio 除錯時可以在需要時下載檔案, 併為使用者提供原始碼除錯, Microsoft庫(例如.NET Core和Roslyn)都已啟用Source Link。

開源地址:
https://github.com/dotnet/sou...

我們本地開發時傳統的除錯模式還是通過引用原始碼的方式進行程式碼除錯,這使得我們很難除錯沒有原始碼的第三方元件庫。我們可以通過 Source Link 在無需原始碼的情況下獲得極佳的除錯體驗。

配置 Visual Studio IDE 工具

步驟 1 - 配置 NuGet.org 符號源

預設情況下,NuGet.org 符號源未啟用。為了讓 SourceLink 正常工作,Visual Studio 需要能夠下載這些原始碼,因此我們必須先進行設定。

在 Visual Studio 中,轉到 工具–>選項–>除錯–>符號:

image.png

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

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

接下來,我們需要轉到 工具–>選項–>除錯–>常規設定視窗並禁用“僅我的程式碼”選項:

image.png

步驟 3 - 啟用源伺服器和源連結支援

預設情況下,Visual Studio 中已啟用 SourceLink 支援,但未啟用源伺服器支援。

再次,轉到 工具->選項->除錯->常規設定視窗並進行以下更改:

image.png

配置完畢,我們開始進入除錯之旅。

除錯元件

新建工程引用 Bootstrap Blazor 元件包,後開始進行除錯。

image.png

命中斷點後,按 Ctrl + Alt + U 快捷鍵,調出 Modules 視窗。

image.png

從 Modules 視窗通過 Name 排序後可以看到我們要除錯的 Bootstrap Blazor 元件包並未載入 PDB 檔案,此時我們點選右鍵如圖所示,選擇 Load Symbols 根據每個人的網路情況會有一些延時,此時 Visual Studio 會從 Nuget.org 上下載元件包所需的 PDB 檔案,下載完畢後,我們按 F11 (逐行除錯)彈出對話方塊如下:

此時由於本地僅有剛剛下載的 PDB 檔案,必須有原始碼才可以進行逐行除錯,所以彈出對話方塊請求下載原始碼並除錯,即可以進入到元件包內。

image.png

image.png

設定命中斷點

在我們的日常除錯中更多的時候是對原始碼進行斷點,程式執行時命中斷點,我們進行除錯。使用 Source Link 後我們能否設定原始碼斷點呢?當然是可以的,上面的方法是需要哪個原始碼就下載哪個原始碼,其實是非常不方便的。我們可以一次性把所有原始碼下載下來,自己根據需求來開啟原始碼檔案進行斷點設定,如果所示操作,解壓縮所有原始碼。

image.png

設定解決方案顯示其他專案。

image.png

Source Link 支援

  • Azure Repos / DevOps
  • GitLab
  • BitBucker
  • Github

總結

本文以 Bootstrap Blazor 元件庫為例講解了如何通過 Source Link 進行第三方包除錯,其他已釋出 snupkg 的第三方元件包同樣可以除錯,包括微軟的 asp.net core 框架相關程式碼。

*Bootstrap Blazor:
*Source Link:
*Github:

微軟最有價值專家是微軟公司授予第三方技術專業人士的一個全球獎項。28年來,世界各地的技術社群領導者,因其線上上和線下的技術社群中分享專業知識和經驗而獲得此獎項。

MVP是經過嚴格挑選的專家團隊,他們代表著技術最精湛且最具智慧的人,是對社群投入極大的熱情並樂於助人的專家。MVP致力於通過演講、論壇問答、建立網站、撰寫部落格、分享視訊、開源專案、組織會議等方式來幫助他人,並最大程度地幫助微軟技術社群使用者使用Microsoft技術。
更多詳情請登入官方網站:
https://mvp.microsoft.com/zh-cn


掃碼關注微軟中國MSDN,獲取更多微軟一手技術資訊和官方學習資料!
image.png

相關文章