偵錯引擎 (DE) 與解釋器或作業系統搭配使用,提供執行控制、中斷點和運算式評估等偵錯服務。 DE 負責監視正在偵錯的程式狀態。 若要達成此目的,DE 會使用支援的執行階段中可用的任何方法,無論是來自 CPU 或執行階段所提供的 API。
例如,共用語言執行階段 (CLR) 提供機制,可透過 ICorDebugXXX 介面監視執行中的程式。 支援 CLR 的 DE 會使用適當的 ICorDebugXXX 介面來追蹤正在偵錯的 Managed 程式碼程式。 然後,它會將任何狀態變更傳達給會話偵錯管理員 (SDM),以將這類資訊轉送至 Visual Studio IDE。
備註
偵錯引擎以特定執行階段為目標,也就是執行偵錯程式的系統。 CLR 是 Managed 程式碼的執行階段,而 Win32 執行階段則適用於原生 Windows 應用程式。 如果您建立的語言可以以這兩個執行階段之一為目標,Visual Studio 已提供必要的偵錯引擎。 您只需要實作的是一個運算式評估器。
偵錯引擎操作
監控服務是通過DE介面實現的,並且可能導致調試包在不同的操作模式之間轉換。 如需詳細資訊,請參閱 作業模式。 每個執行時期環境通常只有一個 DE 實作。
備註
雖然 Transact-SQL 和 JScript 有個別的 DE 實作,但 VBScript 和 JScript 會共用單一 DE。
Visual Studio 偵錯可讓偵錯引擎以兩種方式之一執行:在與 Visual Studio 殼層相同的進程中,或在與正在偵錯的目標程式相同的進程中執行。 後一種形式通常發生在正在調試的進程實際上是在解釋器下運行的腳本時。 偵錯引擎必須對解釋器有深入的了解,才能監控指令碼。 在這種情況下,解釋器實際上是一個運行時;偵錯引擎適用於特定的執行階段實作。 此外,單一 DE 的實作可以跨進程和機器界限分割 (例如,遠端偵錯) 。
DE 會公開 Visual Studio 偵錯介面。 所有通訊均透過 COM。 無論 DE 是在同進程、同進程外或另一部電腦上載入,都不會影響元件通訊。
DE 會與運算式評估器元件搭配使用,讓該特定執行階段的 DE 能夠瞭解運算式的語法。 DE 也會與符號處理常式元件搭配使用,以存取語言編譯器所產生的符號偵錯資訊。 如需詳細資訊,請參閱運算式評估器和符號提供者。