.NET架構源碼解讀之SSCLI的調試支援

來源:互聯網
上載者:User

標籤:

閱讀源碼一個比較快的手段就是在調試器裡閱讀,這樣可以在實際運行SSCLI的過程中,通過堆疊追蹤的方式查看完整的程式執行路徑。

當在SSCLI環境裡執行一個託管程式的時候,堆棧上通常有託管和Unmanaged 程式碼同時在執行。因此在SSCLI裡也支援下面幾種調試情境:

  • 調試託管程式:在SSCLI裡內建了一個託管偵錯工具,cordbg.exe。跟調試普通.net程式不同,目前還無法在Visual Studio裡調試SSCLI環境下的託管程式,在後面有時間的時候,我們會看一下如何在Visual Studio裡添加調試SSCLI託管程式的支援。
  • 調試非託管程式:即調試SSCLI虛擬機器本身的Unmanaged 程式碼,可以使用Visual Studio、WinDbg等普通Windows調試工具進行調試。在非Windows平台下,也可以用gdb這些工具進行調試。
  • 託管非託管程式混合調試:可以Visual Studio和Windbg這些Windows調試工具下通過載入sos調試外掛程式來實現混合調試的功能。另外,sscli也提供了sos調試外掛程式的源碼。
SSCLI裡的符號檔案

在SSCLI裡,會產生兩種符號檔案,一種是編譯非託管程式產生的.pdb檔案,一種是編譯託管程式產生的.ildb檔案。關於符號檔案的作用,請參看我之前的文章:Visual Studio調試之符號檔案。

Windows調試工具調試都支援.pdb檔案,而cordbg.exe可以識別.ildb格式,而sos外掛程式不需要任何符號檔案即可調試。

SSCLI提供了工具ildbconv程式可以在.pdb檔案和.ildb檔案格式之間相互轉換,因此如果要在Visual Studio裡調試SSCLI裡編譯的託管程式,可以用這個工具將對應的.ildb檔案轉換成Visual Studio支援的pdb格式,並在.NET環境下運行託管程式即可調試。ildbconv命令的格式如下:

ildbconv [選項] 符號檔案路徑

其中ildbconv支援下面這些選項:

  • /toildb:將.pdb檔案轉換成.ildb格式;
  • /topdb:將.ildb檔案轉換成.pdb格式。

SSCLI也提供了ildbconv程式的源碼,其路徑位於:\tools\ildbconv\ildbconv.cpp

.NET架構源碼解讀之SSCLI的調試支援

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.