使用源鏈接對(duì)ASP.NET Core源代碼進(jìn)行調(diào)試
在Visual Studio 2017中可以通過(guò)符號(hào)以及源鏈接,非常方便對(duì) ASP.NET Core 2.0中源代碼進(jìn)行調(diào)試。在這篇文章中,我們將重點(diǎn)介紹如何使用源鏈接對(duì)ASP.NET Core源進(jìn)行調(diào)試。
什么是源鏈接?
和我一樣,您可能已經(jīng)注意到在編譯代碼時(shí),會(huì)創(chuàng)建的PDB文件。這些文件保存了符號(hào)信息,這些信息可以選擇用于支持對(duì)外部源代碼的調(diào)試。某些類型的符號(hào)文件可能包含一些源代碼或源代碼的映射。
很長(zhǎng)一段時(shí)間以前,Microsoft已經(jīng)托管了符號(hào)服務(wù)器,它們保存Microsoft產(chǎn)品(如.NET Framework和ASP.NET Core)已發(fā)布的符號(hào)文件。Visual Studio支持動(dòng)態(tài)下載符號(hào)。為此,您必須禁用“調(diào)試” -> “常規(guī)”選項(xiàng)中的“啟用僅我的代碼”選項(xiàng)。默認(rèn)情況下,此選項(xiàng)在Visual Studio中是啟用的。

有關(guān)符號(hào)、符號(hào)服務(wù)器等的更多信息,請(qǐng)參閱此MSDN鏈接。
源鏈接允許您在符號(hào)文件中嵌入被調(diào)用方法的名稱和位置清單,它可以識(shí)別包含代碼的文件以及可以從哪里檢索文件。ASP.NET Core(不是.NET Core)現(xiàn)在支持源鏈接,并提供到GitHub上托管代碼的鏈接。
啟用和使用源鏈接
首先的要求是將Visual Studio 2017更新到最新的版本(15.3),該更新添加了源鏈接的支持。如果安裝此項(xiàng),在“調(diào)試” -> “常規(guī)”選項(xiàng)中,您將看到“啟用源鏈接支持”。

除了確保“啟用僅我的代碼”禁用外,您還必須啟用Microsoft符號(hào)服務(wù)器,在“調(diào)試” -> “符號(hào)”選項(xiàng)中,可以從符號(hào)文件位置列表中啟用“Microsoft符號(hào)服務(wù)器”。

啟用符號(hào)服務(wù)器時(shí),您需要接受調(diào)試時(shí)可能引入的性能影響。

設(shè)置完成后,準(zhǔn)備調(diào)試ASP.NET Core源代碼。為了測(cè)試這個(gè),我在Visual Studio中創(chuàng)建了一個(gè)默認(rèn)的ASP.NET Core 2.0 MVC項(xiàng)目。然后我在HomeController上為Index方法添加了一個(gè)斷點(diǎn)。然后開始調(diào)試應(yīng)用程序。第一次調(diào)試時(shí),您可能會(huì)看到這樣的消息。

這是正在下載的符號(hào)文件,可能需要一段時(shí)間才能完成。
一旦應(yīng)用程序運(yùn)行到您代碼斷點(diǎn)處,您就可以導(dǎo)航到調(diào)用堆棧,以看到正在執(zhí)行的所有外部ASP.NET代碼。

如果您雙擊任何這些調(diào)用,編輯器將使用符號(hào)來(lái)確定該代碼所在的框架位置。使用符號(hào)文件中的鏈接,Visual Studio將從GitHub下載源文件。當(dāng)源鏈接需要下載源代碼時(shí),您會(huì)看到如下警告對(duì)話框:

您可以選擇第一項(xiàng)“下載源并繼續(xù)調(diào)試”選項(xiàng),并繼續(xù)使用該文件進(jìn)行調(diào)試。您可以選擇第二個(gè)選項(xiàng),將下載該文件,并禁用下次文件下載的警告。
下載完源文件后,它將顯示在您選擇堆棧對(duì)應(yīng)的位置。

您還可以在該文件中的其它位置添加自己的斷點(diǎn),然后在調(diào)試應(yīng)用程序時(shí)將其設(shè)置為命中。即使我們停止調(diào)試并重新啟動(dòng),這似乎仍然是有效的。

總結(jié)
在ASP.NET Core中調(diào)試外部源碼非常容易。通過(guò)這個(gè)功能可以獲得更多的價(jià)值,讓我們可以調(diào)試ASP.NET Core源代碼,了解內(nèi)部工作方式。
到此這篇關(guān)于使用源鏈接對(duì)ASP.NET Core源代碼進(jìn)行調(diào)試的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
asp.net Repeater取得CheckBox選中的某行某個(gè)值
Repeater取得CheckBox選中的某行某個(gè)值的實(shí)現(xiàn)代碼2008-07-07
使用.net core3.0 正式版創(chuàng)建Winform程序的方法(圖文)
這篇文章主要介紹了使用.net core3.0 正式版創(chuàng)建Winform程序的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
ASP.Net Core(C#)創(chuàng)建Web站點(diǎn)的實(shí)現(xiàn)
本文主要介紹了ASP.Net Core(C#)創(chuàng)建Web站點(diǎn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
XslTransform.Transform將結(jié)果輸出到字符串里的方法
XslTransform.Transform將結(jié)果輸出到字符串里的方法...2007-04-04
把字符串轉(zhuǎn)為HtmlTable演示動(dòng)畫
怎樣將字符串轉(zhuǎn)為.cs頁(yè)面中的HtmlTable,在論壇上看到了這樣一個(gè)問(wèn)題,想試著把它解決下,感興趣的朋友可以觀看下本文的動(dòng)畫,或許對(duì)你有所幫助2013-03-03
asp.net點(diǎn)選驗(yàn)證碼實(shí)現(xiàn)思路分享 (附demo)
這篇文章主要介紹了asp.net點(diǎn)選驗(yàn)證碼實(shí)現(xiàn)思路分享 (附demo),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-01-01
ASP.NET MVC實(shí)現(xiàn)批量文件上傳
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC實(shí)現(xiàn)批量文件上傳,簡(jiǎn)單介紹單文件上傳的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
DataGridView使用自定義控件實(shí)現(xiàn)簡(jiǎn)單分頁(yè)功能(推薦)
這篇文章主要介紹了DataGridView使用自定義控件實(shí)現(xiàn)簡(jiǎn)單分頁(yè)功能,數(shù)據(jù)庫(kù)使用的是sqlserver,本文通過(guò)通過(guò)實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友參考下吧2019-11-11
asp.net中Post表單保存頁(yè)面狀態(tài)并輸出源碼的實(shí)現(xiàn)方法
先執(zhí)行腳本,復(fù)制源碼到隱藏域里,再輸出源碼,注意代碼紅色設(shè)置2012-08-08

