Debug Source Code in .NET Framework

來源:互聯網
上載者:User
文章目錄
  • 1.1.1基本設定
  • 1.1.2調試.NET Framework原始碼

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

1.1.1基本設定

  首先要確認您所使用Visual Studio 2008版本(Express versions除外)才具有調試.NET Framework原始碼功能(最好先打sp1在安裝)。

  1)現在我們要下載一個補丁Visual Studio 2008 QFE,來更新VS2008中調試功能中的DLL檔案。

  2)接下來我們運行VS2008,然後選擇工具->選項->調試->常規(Tools > Options > Debugging > General),接著我們修改常規中的設定如下:

  取消選擇“啟用Just My Code”(Enable Just My Code)

  選擇“啟用原始伺服器支援”(Enable source server support)

圖1調試中設定

 

  3)接下來我們添加“符號”中的設定,首先設定符號檔案的,輸入一個URL地址http://referencesource.microsoft.com/symbols,然後我們再設定一個本地儲存位置。然後選擇“只在手動載入符號是搜尋上述位置”。

圖2符號中設定

 

1.1.2調試.NET Framework原始碼

  完成了上述簡單的安裝和設定之後,我們可以調試原始碼了。讓我們建一個簡單的WinForm程式測試一下調試效果如何,添加代碼如下而且當我們開始調試時候VS就會自動下載用於調試原始碼dll檔案。

圖3下載調試dll檔案

 

 

圖4設定調試斷點

 

  當我們開始debug時候發現VS會變得很慢,這是由於我們要在從微軟中下載.NET Framework提供的調試原始碼。當下載完畢後我們就可以進入斷點了。

  接著我們要選擇載入符號的位置,我們選擇堆棧視窗的其中一個dll檔案,然後右鍵選擇載入符號,這裡可以選擇從網路上進行載入(很慢)或根據已經下載好的原始碼檔案地址進行調試。(選擇本地載入)

                                  圖5選擇載入符號方式

  由於我已經載入了符號檔案所以這裡不用再設定了,現在我們按F11或可以直接點擊堆棧視窗的dll檔案就可以進入原始碼調試了。

  如果在堆棧視窗沒有找到我們要進入的dll檔案我們可以手動添加,例如我們在Form裡面添加了Paint方法,但我們在堆棧視窗沒有找到System.Drawing的dll檔案,那麼我們通過以下方法添加該dll檔案。

 

圖6手動添加dll檔案

  現在我們可以調試.NET Framework的原始碼了,但是我們發現每次調試VS都會下載符號檔案這使得VS啟動並執行十分慢,這是由於我們每次調試都要重新從微軟中載入符號檔案,但我們已經把符號檔案下載到本地儲存起來了,還記得嗎?我們在前面設定了從網上載入,那麼我們可以關閉下載調試功能,從而改為使用本地檔案進行調試即可。

  前面提到我們要把微軟提供的可調試dll檔案都下載都本地,所以我們要確保一次過把調試檔案都下載下來,結果我們只有對調試設定修改一下就OK了。

 

          圖7選擇載入符號方式

  現在我們重新偵錯工具,這次下載符號檔案時間較長,因為這次會把微軟提供可調試dll檔案都下載到本地,而且檔案大小有50MB,然後下載完畢之後VS會自動進入斷點,接著我們停止調試,取消選擇從微軟下載符號檔案,因為我們現在要使用本地符號檔案進行調試。

            圖8取消選擇

  現在我們可以載入本地的調試檔案進行調試,從而不影響VS的運行效率了。微軟官方提供可調試dll檔案如下,我相信以後微軟還會提供給更多的可調試dll檔案,我們現在不僅僅可以通過反編譯器查看原始碼,還可以斷點調試原始碼即使不能修改原始碼:

  • 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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.