1. 程式人生 > >除錯 ASP.NET Core 2.0 原始碼

除錯 ASP.NET Core 2.0 原始碼

在Visual Studio 2017中可以通過符號以及源連結,非常方便對 ASP.NET Core 2.0中原始碼進行除錯。在這篇文章中,我們將重點介紹如何使用源連結對ASP.NET Core源進行除錯。

什麼是源連結?

和我一樣,您可能已經注意到在編譯程式碼時,會建立的PDB檔案。這些檔案儲存了符號資訊,這些資訊可以選擇用於支援對外部原始碼的除錯。某些型別的符號檔案可能包含一些原始碼或原始碼的對映。

很長一段時間以前,Microsoft已經託管了符號伺服器,它們儲存Microsoft產品(如.NET Framework和ASP.NET Core)已釋出的符號檔案。Visual Studio支援動態下載符號。為此,您必須禁用“除錯” -> “常規”選項中的“啟用僅我的程式碼”選項。預設情況下,此選項在Visual Studio中是啟用的。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

有關符號、符號伺服器等的更多資訊,請參閱此MSDN連結。

源連結允許您在符號檔案中嵌入被呼叫方法的名稱和位置清單,它可以識別包含程式碼的檔案以及可以從哪裡檢索檔案。ASP.NET Core(不是.NET Core)現在支援源連結,並提供到GitHub上託管程式碼的連結。

啟用和使用源連結

首先的要求是將Visual Studio 2017更新到最新的版本(15.3),該更新添加了源連結的支援。如果安裝此項,在“除錯” -> “常規”選項中,您將看到“啟用源連結支援”。

0?wx_fmt=png

除了確保“啟用僅我的程式碼”禁用外,您還必須啟用Microsoft符號伺服器,在“除錯” -> “符號”選項中,可以從符號檔案位置列表中啟用“Microsoft符號伺服器”。

0?wx_fmt=png

啟用符號伺服器時,您需要接受除錯時可能引入的效能影響。

0?wx_fmt=png

設定完成後,準備除錯ASP.NET Core原始碼。為了測試這個,我在Visual Studio中建立了一個預設的ASP.NET Core 2.0 MVC專案。然後我在HomeController上為Index方法添加了一個斷點。然後開始除錯應用程式。第一次除錯時,您可能會看到這樣的訊息。

0?wx_fmt=png

這是正在下載的符號檔案,可能需要一段時間才能完成。

一旦應用程式執行到您程式碼斷點處,您就可以導航到呼叫堆疊,以看到正在執行的所有外部ASP.NET程式碼。

0?wx_fmt=png

如果您雙擊任何這些呼叫,編輯器將使用符號來確定該程式碼所在的框架位置。使用符號檔案中的連結,Visual Studio將從GitHub下載原始檔。當源連結需要下載原始碼時,您會看到如下警告對話方塊:

0?wx_fmt=png

您可以選擇第一項“下載源並繼續除錯”選項,並繼續使用該檔案進行除錯。您可以選擇第二個選項,將下載該檔案,並禁用下次檔案下載的警告。

下載完原始檔後,它將顯示在您選擇堆疊對應的位置。

0?wx_fmt=png

您還可以在該檔案中的其它位置新增自己的斷點,然後在除錯應用程式時將其設定為命中。即使我們停止除錯並重新啟動,這似乎仍然是有效的。

0?wx_fmt=png

總結

Very nice ,在ASP.NET Core中除錯外部原始碼非常容易。通過這個功能可以獲得更多的價值,讓我們可以除錯ASP.NET Core原始碼,瞭解內部工作方式。

參考資料:

  • Debugging ASP.NET Core 2.0 Source Code

原文地址:http://www.cnblogs.com/tdfblog/p/debugging-asp-net-core-2-source.html

.NET社群新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

640?wx_fmt=jpeg