背景
當我們在學習ASP.NET Core或者調試ASP.NET Core程序的時候,有時候需要調試底層代碼,但是當我們在Visual Studio中調試程序的時候,由於一些基礎庫或者第三方庫缺少pdb文件,所以調試這些庫的代碼的時候,會出現斷點不能進去的情況。
例如,在如下代碼中,我們希望調試一下View()方法,看看其中的內部實現
但是當我們點擊F11之后,程序會直接跳到下一步
Source Link
SourceLink是一組用於描述可嵌入到符號、二進制文件和包中的源代碼控制元數據的包和規范。官網鏈接:https://github.com/dotnet/sourcelink
SourceLink當前支持的源代碼來源
- Github
- Azure DevOps(VSTS)
- TFS
- Gitlab
- Bitbucket
這里個人理解就是如果你調試的程序集是通過Nuget導入的,並且該程序集的源碼是寄存在Github, VSTS等源代碼平台中的,使用Source Link,調試階段就會自動從源代碼平台下載指定代碼,並進入斷點調試
標注:這里需要引入.NET Symbols的概念,我對這個理解的不是太深,希望有大牛給解釋一下, 我后續再做補充。相關文章Publishing and Consuming Symbols and Source for Debugging
如何在Visual Studio 2017中使用Source Link
Visual Studio 2017 15.3以上版本中已經集成了Source Link, 具體開啟方式如下
首先在 Options > Debugging > General中關閉Just My Code, 並啟用Enable Source Link Support
然后在 Options > Debugging > Symbols中啟用Microsoft Symbol Servers
最終效果
下面我們創建一個默認的asp.net core mvc站點,並以調試方式啟動項目。 這里我們還是將斷點打在HomeController
的Index
方法中。
當斷點到達return View()
代碼塊時,我們點擊F11, Visual Studio會彈出以下窗口,提示你是否想要下載源文件進行調試
點擊確定之后,斷點就進入了