參考:Debugging into .NET Core 2.1git
原理:利用與源碼作了鏈接(source link)的pdb文件,反向找到源碼文件,從而在調試進入源碼。github
pdb(program database)文件,中文翻譯過來叫程序數據庫文件,其實pdb文件還有一個別名叫作symbol文件,也就是符號文件,裏面存有標識符,供調試器使用。調試器根據標識符找到對應的源碼和行號,以及可執行文件中在設置斷點的位置。數據庫
從.Net Core 2.1開始,.Net開源社區將.Net Core的pdb文件發佈到Microsoft Symbol Server上,並作了Source Link,正是這樣,因此咱們能夠在調試的時候進入.Net Core的源碼,注意,這一功能僅在.Net Core 2.1以上版本有效,並且只能經過調試器進入源碼。json
<TargetFramework>
標籤。有了以上3個先決條件後,須要在vscode的launch.json配置中添加以下字段框架
//關閉 「僅個人代碼」 項,這樣 "justMyCode": false, "symbolOptions": { //從Microsoft Symbol Server(https://msdl.microsoft.com/download/symbols)上查找並下載symbol文件 "searchMicrosoftSymbolServer": true }, //取消jit編譯器的優化(默認是false) "suppressJITOptimizations": true, "env": { //這個環境變量告訴.Net RunTime 忽略已經提早編譯的源碼.Net框架程序集,用JIT編譯器編譯的程序集代替。 "COMPlus_ZapDisable": "1" }
有了上面的配置,當你調試時,調試器就會在Microsoft Symbol Server上自動下載symbol文件和對應的源碼(不是全部的,僅僅是當前調試用到的),但下載了咱們須要的symbol文件後,能夠註釋掉 searchMicrosoftSymbolServer:true 這一項,這樣就能夠再也不Symbol Server上去查找symbol文件了。優化
suppressJITOptimzatioins和COMPlus_ZapDisable兩個選項組合起來使用,才讓咱們可以將未優化的源碼載入調試器中,從而達到debugging into Source的功能。插件