Share via


偵錯引擎

偵錯引擎 (DE) 如何與解譯器或作業系統搭配使用,以提供執行控制、中斷點和運算式評估等偵錯服務。 DE 負責監視正在偵錯之程式的狀態。 為此,DE 會使用受支援執行階段中可用的任何方法,無論是從 CPU 還是執行階段提供的 API。

例如,通用語言執行平台 (CLR) 提供透過 ICorDebugXXX 介面監視執行中程式的機制。 支援 CLR 的 DE 使用適當的 ICorDebugXXX 介面追蹤正在偵錯的受控程式碼程式。 然後,它將任何狀態變更傳達給工作階段偵錯管理員 (SDM),後者將此類資訊轉發給 Visual Studio IDE。

注意

偵錯引擎以特定執行階段為目標,也就是要在其中執行偵錯程式的系統。 CLR 是受控程式碼的執行階段時,Win32 執行階段適用於本機 Windows 應用程式。 如果建立的語言可以將這兩個執行階段的任一個設為目標,Visual Studio 已經提供必要的偵錯引擎。 只需要實作一個運算式評估工具。

偵錯引擎作業

監視服務是透過 DE 介面實作,而且可能會導致偵錯套件在不同的作業模式之間轉換。 如需詳細資訊,請參閱作業模式。 每個執行階段環境通常只有一個 DE 實作。

注意

Transact-SQL 和 JScript 有個別的 DE 實作,而 VBScript 和 JScript 則共用單一 DE。

Visual Studio 偵錯可讓偵錯引擎用以下其中一種方式執行:在與 Visual Studio shell 相同的程序中執行,或在與正在偵錯的目標程式相同的程序中執行。 在偵錯的程序實際上是在解譯器下執行的指令碼時,通常會以後者形式發生。 偵錯引擎必須對解譯器有深入了解才能監視指令碼。 在這種情況下,解譯器實際上是一個執行階段;偵錯引擎適用於特定的執行階段實作。 此外,單一DE 的實作可以跨程序和電腦界限 (例如:遠端偵錯) 進行分割。

DE 公開 Visual Studio 偵錯介面。 所有通訊都是透過 COM。 無論 DE 是以同處理序載入、跨處理序載入還是在另一台電腦載入,都不會影響元件通訊。

DE 與運算式評估工具元件一起使用,使特定執行階段的 DE 能夠了解運算式的語法。 DE 也與符號處理程式元件配合使用,以存取由語言編譯器產生的符號偵錯資訊。 如需詳細資訊,請參閱運算式評估工具符號提供者

另請參閱