Debug Source Code in .NET Framework
摘要:一直以來有聽說微軟公開了.NET Framework的一些類,可以讓我們通過VS2008進(jìn)行調(diào)試查看,最近嘗試了一下該功能,通過斷點(diǎn)調(diào)試微軟提供的源代碼,總體感覺微軟還是向開源邁開了一大步,不過感覺調(diào)試操作很麻煩而且只可以看不允許做出任何修改,那還不如通過反編譯查看來的快捷。還有就是如果微軟能把.NET Framework一些類圖也自動生成出來那就是very good啦。
1.1.1基本設(shè)置
首先要確認(rèn)您所使用Visual Studio 2008版本(Express versions除外)才具有調(diào)試.NET Framework源代碼功能(最好先打sp1在安裝)。
1)現(xiàn)在我們要下載一個(gè)補(bǔ)丁Visual Studio 2008 QFE,來更新VS2008中調(diào)試功能中的DLL文件。
2)接下來我們運(yùn)行VS2008,然后選擇工具->選項(xiàng)->調(diào)試->常規(guī)(Tools > Options > Debugging > General),接著我們修改常規(guī)中的設(shè)置如下:
取消選擇“啟用僅我的代碼”(Enable Just My Code)
選擇“啟用源服務(wù)器支持”(Enable source server support)

圖1調(diào)試中設(shè)置
3)接下來我們添加“符號”中的設(shè)置,首先設(shè)置符號文件的下載地址,輸入一個(gè)URL地址http://referencesource.microsoft.com/symbols,然后我們再設(shè)置一個(gè)本地保存位置。然后選擇“只在手動加載符號是搜索上述位置”。

圖2符號中設(shè)置
1.1.2調(diào)試.NET Framework源代碼
完成了上述簡單的安裝和設(shè)置之后,我們可以調(diào)試源代碼了。讓我們建一個(gè)簡單的WinForm程序測試一下調(diào)試效果如何,添加代碼如下而且當(dāng)我們開始調(diào)試時(shí)候VS就會自動下載用于調(diào)試源代碼dll文件。

圖3下載調(diào)試dll文件

圖4設(shè)置調(diào)試斷點(diǎn)
當(dāng)我們開始debug時(shí)候發(fā)現(xiàn)VS會變得很慢,這是由于我們要在從微軟中下載.NET Framework提供的調(diào)試源代碼。當(dāng)下載完畢后我們就可以進(jìn)入斷點(diǎn)了。
接著我們要選擇加載符號的位置,我們選擇堆棧窗口的其中一個(gè)dll文件,然后右鍵選擇加載符號,這里可以選擇從網(wǎng)絡(luò)上進(jìn)行加載(很慢)或根據(jù)已經(jīng)下載好的源代碼文件地址進(jìn)行調(diào)試。(選擇本地加載)

圖5選擇加載符號方式
由于我已經(jīng)加載了符號文件所以這里不用再設(shè)置了,現(xiàn)在我們按F11或可以直接點(diǎn)擊堆棧窗口的dll文件就可以進(jìn)入源代碼調(diào)試了。
如果在堆棧窗口沒有找到我們要進(jìn)入的dll文件我們可以手動添加,例如我們在Form里面添加了Paint方法,但我們在堆棧窗口沒有找到System.Drawing的dll文件,那么我們通過以下方法添加該dll文件。


圖6手動添加dll文件
現(xiàn)在我們可以調(diào)試.NET Framework的源代碼了,但是我們發(fā)現(xiàn)每次調(diào)試VS都會下載符號文件這使得VS運(yùn)行的十分慢,這是由于我們每次調(diào)試都要重新從微軟中加載符號文件,但我們已經(jīng)把符號文件下載到本地保存起來了,還記得嗎?我們在前面設(shè)置了從網(wǎng)上加載,那么我們可以關(guān)閉下載調(diào)試功能,從而改為使用本地文件進(jìn)行調(diào)試即可。
前面提到我們要把微軟提供的可調(diào)試dll文件都下載都本地,所以我們要確保一次過把調(diào)試文件都下載下來,結(jié)果我們只有對調(diào)試設(shè)置修改一下就OK了。

圖7選擇加載符號方式
現(xiàn)在我們重新調(diào)試程序,這次下載符號文件時(shí)間較長,因?yàn)檫@次會把微軟提供可調(diào)試dll文件都下載到本地,而且文件大小有50MB,然后下載完畢之后VS會自動進(jìn)入斷點(diǎn),接著我們停止調(diào)試,取消選擇從微軟下載符號文件,因?yàn)槲覀儸F(xiàn)在要使用本地符號文件進(jìn)行調(diào)試。

圖8取消選擇
現(xiàn)在我們可以加載本地的調(diào)試文件進(jìn)行調(diào)試,從而不影響VS的運(yùn)行效率了。微軟官方提供可調(diào)試dll文件如下,我相信以后微軟還會提供給更多的可調(diào)試dll文件,我們現(xiàn)在不僅僅可以通過反編譯器查看源代碼,還可以斷點(diǎn)調(diào)試源代碼即使不能修改源代碼:
-
Mscorlib.DLL
-
System.DLL
-
System.Data.DLL
-
System.Drawing.DLL
-
System.Web.DLL
-
System.Web.Extensions.DLL
-
System.Windows.Forms.DLL
-
System.XML.DLL
-
WPF (UIAutomation*.dll, System.Windows.DLL, System.Printing.DLL, System.Speech.DLL, WindowsBase.DLL, WindowsFormsIntegration.DLL, Presentation*.dll, some others)
-
Microsoft.VisualBasic.DLL
如果大家想了解更多可以查看Shawn Burke's Blog
|
|
關(guān)于作者:[作者]:
JK_Rush從事.NET開發(fā)和熱衷于開源高性能系統(tǒng)設(shè)計(jì),通過博文交流和分享經(jīng)驗(yàn),歡迎轉(zhuǎn)載,請保留原文地址,謝謝。 |

摘要:一直以來有聽說微軟公開了.NET Framework的一些類,可以讓我們通過VS2008進(jìn)行調(diào)試查看,最近嘗試了一下該功能,通過斷點(diǎn)調(diào)試微軟提供的源代碼,總體感覺微軟還是向開源邁開了一大步,不過感覺調(diào)試操作很麻煩而且只可以看不允許做出任何修改,那還不如通過反編譯查看來的快捷。還有就是如果微軟能把.NET Framework一些類圖也自動生成出來那就是very good啦。
浙公網(wǎng)安備 33010602011771號