更新:2007 年 11 月
Common Language Runtime (CLR) 偵錯 API 可讓工具廠商撰寫偵錯工具,以便對 CLR 環境中執行的應用程式進行偵錯。要偵錯的程式碼可以是 CLR 支援之任何種類的程式碼。
CLR 偵錯 API 主要是使用 Unmanaged 程式碼來實作。因此,偵錯 API 會以一組 COM 介面形式呈現。API 是由一組 CLR 實作的 COM 物件和介面,以及一組必須由偵錯工具實作的 COM 回呼介面所組成。由於這些偵錯介面都是以 COM 為基礎,因此可以透過分散式 COM (DCOM) 輕易地擴充偵錯工具程式以進行遠端偵錯。
API 分類
偵錯 API 包括下列三組介面,這三組介面一般是由 CLR 偵錯工具所使用,並會當做 Unmanaged 程式碼來實作:
支援 CLR 應用程式偵錯的介面。
提供存取符號偵錯資訊 (Symbolic Debug Info) 的介面,一般會存放在程式資料庫 (PDB) 檔案中。
支援在電腦上查詢處理序和應用程式定義域的介面。
偵錯 API 會仰賴兩組額外的介面:
中繼資料 API,可處理靜態程式資訊 (例如類別和方法型別資訊) 的檢查。
符號存放區 API,可支援 Managed 程式碼偵錯工具的來源層級偵錯。
偵錯介面也可以組織到下表顯示的功能分類中。
API 分類 |
說明 |
|---|---|
登錄 |
發生特定事件時,偵錯工具會呼叫這些介面以登錄 CLR,並要求告知。 |
告知 |
回呼介面,CLR 會使用這些介面來告知各種事件的偵錯工具,並傳回所要求的資訊。這些介面都必須由偵錯工具來實作。 |
中斷點 |
偵錯工具會呼叫這些介面,以擷取中斷點的相關資訊。 |
執行 |
偵錯工具會呼叫這些介面,以控制偵錯項目的執行並存取呼叫堆疊。 |
資訊 |
偵錯工具會呼叫這些介面,以取得偵錯項目的相關資訊。 |
列舉型別 |
偵錯工具會呼叫這些介面以列舉物件。 |
修改 |
偵錯工具會呼叫這些介面,修改已經過偵錯的程式碼。 |
支援的環境
CLR 偵錯機能可在 CLR 支援的所有處理器和作業系統上使用,例外如下所示:
64 位元的作業系統不支援「編輯後繼續」和混合模式的偵錯。SetIP 方法 (ICorDebugILFrame::SetIP 和 ICorDebugNativeFrame::SetIP) 在 64 位元作業系統上有其他限制。其餘功能在所有處理器上則相同,因此可做為處理器專有的資料表示 (指標大小、暫存器內容等)。
Win9x 作業系統不支援「編輯後繼續」和混合模式的偵錯。其餘功能在所有作業系統上應該相同,只會有少許的特定例外,而這些例外會記載於個別功能的文件中。