Eric's Thinking Space 程式設計 音樂 心情 有趣 Kuso

2008/02/26

Visual Studio 2008 針對.NET Framework 原始碼進行直接偵錯之設定教學

期待已久的.NET Framework終於開放原始碼了,微軟在MS-RL協議下終於公開了.NET Framework原始碼,我們只可以自由查看,不允許直接進行修改。

第一批開放的原始碼包括:
.NET基本元件:
System,System.CodeDom,System.Collections,System.ComponentModel, System.Diagnostics, System.Drawing, System.Globalization, System.IO, System.Net, System.Reflection, System.Runtime, System.Security, System.Text, System.Threading

ASP.NET:
System.Web, System.Web.Extensions

Windows Forms:
System.Windows.Forms

Windows Presentation Foundation:
System.Windows

ADO.NET和 XML:
System.Data
System.Xml



以下就說明一下啟用VS2008中文正式版 之.Net Framework內部原始碼偵錯的步驟:
本說明參考自 Configuring Visual Studio to Debug .NET Framework Source Code 一文
若想知道更詳細的資訊,可以直接到作者的Blog。

1. 選擇【工具】->【選項】->【偵錯】->【一般】。
取消勾取 【啟用Just My Code】勾選【啟用來源伺服器支援】

2. 選擇【一般】->【符號】,新增符號檔位置 http://referencesource.microsoft.com/symbols
選擇一個目錄來作為Cache用。
勾選【僅在手動載入符號時搜尋上列位置】。
3. 設定完成後需重新啟動VS2008


4. 重新啟動開始偵錯之後,在堆疊視窗中,原本.Net的dll會標記為灰色(ex:System.Web.dll),代表無法看到原始碼,在其上按滑鼠右鍵,並選擇【載入符號】。


5. 此時VS2008會花些時間(頗久= =)到Symbol Server上去下載檔案。
6.下載完之後,很神奇的原本灰色的地方都變成正常的黑色了,左鍵點二下即可進入原始碼偵錯。

進階設定

雖然載入符號之後會將檔案Cache住,但是如果每次要偵錯到沒下載過的地方,就要重新按下右鍵選載入符號一次,實在是有點麻煩。
接下來介紹一勞永逸的設定方法,原理是在第一次偵錯時就先把所有的Symbol檔全部載好,之後就不用每次下載了。

1. 同樣選擇【工具】->【選項】->【偵錯】->【符號】。
取消勾選【僅在手動載入符號時搜尋上列位置】。


2. 設定完之後,第一次開始啟動偵錯,此時你會發現跑的非常的慢,因為VS2008正在下載全部的Symbol檔,VS2008的【狀態列】還有【輸出視窗】將會顯示目前載入與下載的情形。(目前全部的Symbol檔共約50Mb左右)

3. 第一次偵錯會非常慢,但是只要下載過一次,即會Cache在硬碟中。
接下來必須把【符號檔位置】取消勾選,如此之後的每次除錯就會直接從Cache
中的資訊存取,而不透過Symbol erver

之後如果這些dll的版本有更動,或者微軟釋出了新的開放原始碼,可以在重新依照此設定的方式來取得新的檔案。


Reference: Configuring Visual Studio to Debug .NET Framework Source Code

沒有留言: