4

這是我已經試過:如何在Visual Studio 2017中調試.NET 4.6框架源代碼?

做了一個新的控制檯應用程序(.NET框架)在Visual Studio 2017年

添加以下代碼:

static void Main(string[] args) 
{ 
    new Dictionary<int, int>().TryGetValue(3, out int x); //I want to step into TryGetValue() (this is just an example) 
} 

配置在這裏列出的設置: https://blogs.msdn.microsoft.com/sburke/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code/

確認符號被裝載在模塊窗口:

mscorlib.dll符號加載。 4.6.1586.0通過內置:NETFXREL2

嘗試: 「進入(F11)」

嘗試: 「走進特殊」 | 「System.Collections.Generic.Dictionary.TryGetValue」

兩者都只是跨越了界限。

我試着在這裏使用的細節配置VS:http://www.symbolsource.org/Public/Home/VisualStudio

同樣的結果,過線的調試步驟。

我看了答案在這裏:https://stackoverflow.com/a/12432029/297451

但這個版本似乎並沒有成爲一個安全更新,而對於「網站:support.microsoft.com/kb 4.6.1586.0」的搜索率沒有。

我在做什麼錯?

+0

工作得很好,看起來像參考源碼符號服務器實際上更新到4.6.2。我得到的mscorlib.dll的散列碼是BEC17127F5324AE795428E84A11901182。使用我記錄的[此處](http://stackoverflow.com/a/27655501/17034)的故障排除過程。必要時清空緩存。 –

+0

@HansPassant刪除緩存的PDB解決了第一個問題,謝謝(我有一個剝離的PDB?如何判斷?)現在我可以進入函數,但它是「Dictionary [from metadata]」,而不是源代碼。我有相同的散列BEC17127F5324AE795428E84A11901182。 – Jon

+0

@HansPassant我仍然有一個問題,因爲它不通過源代碼。 「來自元數據的字典」僅僅是界面,而不是實現。它應該從源服務器按需獲取代碼。 – Jon

回答

4

這是答案,這要歸功於Hans Passant。請注意,此解決方案引發了其他問題。

  1. 確保https://referencesource.microsoft.com/包含您正在調試的確切版本。

  2. 配置的Visual Studio爲這裏規定: https://referencesource.microsoft.com/setup.html

    • 取消選中「啓用僅我的代碼」
    • 勾選「啓用.NET框架源步進」(這應該是唯一需要的步驟)
    • 勾選「啓用源服務器支持」
    • 取消選中「要求源文件與原始版本完全匹配」
  3. 確認符號加載模塊窗口,與包括源索引。

    • 如何判斷是否包含源索引?模塊窗口不指定PDB是否剝離了源信息。

微軟可以使這個過程更大量給予幫助的錯誤消息,而不是默默失敗強勁。

+0

感謝您在這裏分享您的解決方案,您可以將其標記爲答案,這樣可以幫助其他社區成員遇到同樣的問題。當然,如果您對VS產品有任何好的建議,您可以通過報告工具提交功能請求(http://visualstudio.uservoice.com/forums/121579-visual-studio)或通過報告工具報告反饋VS IDE。 –

+0

我剛剛安裝了.NET 4.7 Developer Pack,並在Windows 10上安裝了VS2017中的解決方案。我試過所有這些說明,並且無法步入列表 Sort。我無法真正看到圍繞此的安全更新。公平地說我有點卡住了! – Andez

+0

這適用於我https://hmemcpy.com/2014/07/how-to-debug-anything-with-visual-studio-and-jetbrains-dotpeek-v1-2/基本上使用JetBrains dotPeek作爲符號服務器。 – Andez

1

使用Jetbrains dotPeek中的符號服務器功能。努力獲得標準功能後,爲我工作就像一個魅力。

+0

當其他一切都失敗了,這就像一場夢! – DrGriff

+0

你能解釋一下如何將它連接到vs2017嗎? – Invader

+0

@Invader對不起,延遲和這個答案。我在VS2015中做到了。我在VS2017中簡單地嘗試了一下,但沒有得到它的工作。從記憶中,遵循他們的doco得到它的工作。 –

相關問題