簡體   English   中英

Vs2017來源不可用

[英]Vs2017 Source Not Available

我正在嘗試通過單擊堆棧跟蹤來調試System.Net.Http.Formating.dll:

System.Net.Http.Formatting.dll!System.Net.Http.Formatting.JsonMediaTypeFormatter.WriteToStreamAsync.AnonymousMethod__c()

我的“只是我的代碼已禁用”,我有以下符號服務器:

https://nuget.smbsrc.net
http://localhost:33417/ (dot peek)
Microsoft Symbol Server

我確實有pdb可用,但是我得到以下錯誤/圖像。

如何正確克服它?

為什么在Visual Studio中調試第三方源代碼會如此麻煩?

在此輸入圖像描述

在按照@Jack Zhai-MSFT指出的鏈接后,我終於能夠理解.net框架無法調試的原因。

事實證明,這些符號是在沒有各自來源的情況下下載的,因為我指的是Microsoft Symbol Server而不是http://referencesource.microsoft.com/symbols

然后,我的以下嘗試是取消選中“Microsoft Symbols Server”或更改符號菜單中的順序。 令我驚訝的是,我無法刪除它,也無法更改順序,即使在禁用之后,仍然會從那里獲取符號。

也許這是一個VS2017社區錯誤。

我接下來做了什么,實際上解決了它:

  1. 刪除了我的符號緩存,它在沒有源代碼的情況下誤導了pdbs
  2. 啟用我的代碼標志,禁用“啟用.NET Framework源步進”並在調試模式下啟動應用程序
  3. 暫停在一個斷點處,在堆棧中,我可以訪問我想要調試的代碼
  4. 雙擊此類堆棧,然后單擊“加載符號”。
  5. 這一次,由於某種原因,跳過了Microsoft Symbol Server,並下載了正確的pdbs

請注意,我仍然無法下載像system.net.http這樣的“優化符號”,但我會嘗試下一步

另外,我使用它作為參考設置符號服務器,這有助於我及時獲得任何第三方符號(除了.net)

https://www.symbolsource.org/Public/Wiki/Using

在此輸入圖像描述

編輯:

在dotPeeker的幫助下,我能夠通過以下方式獲取所有丟失的pdb文件:

  1. 將這些dll加載到dotpeeker中(例如:System.Net.Http)
  2. 從該DLL加載其中一個源文件
  3. 命中生成PDB並將其存儲到VS2017使用的同一緩存文件夾中

唷! 對於應該是微不足道的事情來說真是個麻煩!

要調試第三方源代碼,可以使用.NET Reflector或dotPeek與VS.

參考:

是否可以使用dotPeek反編譯的源實際調試第三方代碼?

更新:

如果您只想調試.NET源代碼,請參閱: 如何在Visual Studio 2017中調試.NET 4.6框架源代碼?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM