The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

在 Visual Studio 2010 如何逐步執行偵錯 .NET 核心原始碼

微軟有個 Microsoft Symbol Server 可讓你在開發的過程中提供你所有 .NET Framework 組件的偵錯資訊 (symbol debugging information),我之前也有文章介紹過如何在 Visual Studio 2008 設定,到了 Visual Studio 2010 設定變的更簡單些,支援的組件也更多,包括 .NET 2.0, 3.0, 3.5, 4.0 BCL, MVC1.0, 2.0,甚至於你可以從 SymbolSource.org 設定更多的符號檔 (*.pdb) 位置。

啟用 .NET Framework 原始碼逐步偵錯功能

1. 開啟 Visual Studio 2010 RTM 並點擊選單 [工具] / [選項] –> [偵錯] / [一般],並勾選 [啟用 .NET Framework 來源步進]  ( 註: 這翻譯實在太糟糕了,建議: 啟用 .NET Framework 原始碼逐步偵錯 )

image

按下 [確定] 後,會出現一個提醒視窗告知會停用 Just My Code 的設定:

以及以下提示: ( 都是中文字,請各位務必要看 )

2. 請勾選 [Microsoft 符號伺服器],另外,如果 C 磁碟機不夠大,建議更換預設「快取此目錄中的符號」的儲存路徑:

按下 [確定] 後,就會開始從 Microsoft Symbol Server 開始下載 符號檔(*.pdb),可能會花一些時間下載,這要看你的網路速度如何。

就這樣兩個步驟即可設定完成。

 

執行逐步偵錯的方式

1. 先在專案中設定中斷點並按下 F5 開始偵錯,如果有組件符號檔尚未下載,這時會花些時間下載,但只會下載一次而已

2. 接著開啟 呼叫堆疊(Call Stack) 視窗,並在你想要檢視的地方 雙擊滑鼠(Double Click)

第一次點選的時候,它會出現 End User License Aggreement 請看完並按下 Accept 按鈕

只是每次開啟後都會出現以下錯誤(每次都會),有點惱人:

這是因為所有原始碼檔最後面多了一個奇怪的字元,不知為何加上去的:

最後,你就可以看到完整的 .NET Framework 原始碼了!

但並非所有組件都有提供參考用的原始碼,如果你選到這些類別就會出現以下「沒有可用來源」的畫面:

 

相關連結