디버그 엔진
DE(디버그 엔진)는 인터프리터 또는 운영 체제와 함께 작동하여 실행 제어, 중단점 및 식 계산과 같은 디버깅 서비스를 제공합니다. DE는 디버깅 중인 프로그램의 상태를 모니터링합니다. 이를 달성하기 위해 DE는 CPU에서 지원되든 아니면 런타임에 제공되는 API에서 지원되든 관계없이 지원되는 런타임에서 사용할 수 있는 모든 메서드를 사용합니다.
예를 들어 CLR(공용 언어 런타임)은 ICorDebugXXX 인터페이스를 통해 실행 중인 프로그램을 모니터링하는 메커니즘을 제공합니다. CLR을 지원하는 DE는 적절한 ICorDebugXXX 인터페이스를 사용하여 디버그되는 관리 코드 프로그램을 추적합니다. 그런 다음, 상태 변경 내용을 SDM(세션 디버그 관리자)에 전달하면 SDM이 이러한 정보를 Visual Studio IDE에 전달합니다.
참고 항목
디버그 엔진은 특정 런타임, 즉 디버그 중인 프로그램이 실행되는 시스템을 대상으로 합니다. CLR은 관리 코드의 런타임이며 Win32 런타임은 네이티브 Windows 애플리케이션용입니다. 만든 언어가 이러한 두 런타임 중 하나를 대상으로 할 수 있는 경우 Visual Studio는 이미 필요한 디버그 엔진을 제공합니다. 식 계산기만 구현하면 됩니다.
디버그 엔진 작업
모니터링 서비스는 DE 인터페이스를 통해 구현되며 디버그 패키지가 서로 다른 작업 모드 간에 전환될 수 있습니다. 자세한 내용은 작업 모드를 참조하세요. 일반적으로 런타임 환경당 하나의 DE 구현만 있습니다.
참고 항목
Transact-SQL과 JScript에는 별도의 DE 구현이 있지만, VBScript와 JScript는 단일 DE를 공유합니다.
Visual Studio 디버깅을 사용하면 디버그 엔진이 두 가지 방법, 즉 Visual Studio 셸과 동일한 프로세스나 디버그 중인 대상 프로그램과 동일한 프로세스 중 하나를 실행할 수 있습니다. 후자의 양식은 일반적으로 디버그되는 프로세스가 실제로 인터프리터에서 실행되는 스크립트일 때 발생합니다. 스크립트를 모니터링하려면 디버그 엔진이 인터프리터에 대해 잘 알고 있어야 합니다. 이 경우 인터프리터는 사실상 런타임입니다. 디버그 엔진은 특정 런타임 구현을 위한 것입니다. 또한 단일 DE 구현은 프로세스 및 컴퓨터 경계(예: 원격 디버깅)를 통해 분할할 수 있습니다.
DE는 Visual Studio 디버깅 인터페이스를 노출합니다. 모든 통신은 COM을 통해 진행됩니다. DE는 In-process, out-of-process 또는 다른 컴퓨터에 로드되는지에 관계없이 구성 요소 통신에 영향을 주지 않습니다.
DE가 식 계산기 구성 요소와 함께 작동하여 DE가 특정 런타임 동안 식 구문을 이해할 수 있게 됩니다. 또한 DE는 기호 처리기 구성 요소와 함께 작동하여 언어 컴파일러에서 생성된 기호 디버그 정보에 액세스합니다. 자세한 내용은 식 계산기 및 기호 공급자를 참조하세요.