업데이트: 2007년 11월
CLR(공용 언어 런타임) 디버깅 API를 사용하면 도구 공급업체가 CLR 환경에서 실행되는 응용 프로그램을 디버깅하기 위한 디버거를 작성할 수 있습니다. CLR에서 지원되는 모든 종류의 코드를 디버깅할 수 있습니다.
CLR 디버깅 API는 기본적으로 관리 코드와 함께 구현됩니다. 따라서 디버깅 API는 COM 인터페이스 집합으로 표시됩니다. API는 CLR에서 구현하는 COM 개체 및 인터페이스 컬렉션과 디버거에서 구현해야 하는 COM 콜백 인터페이스 컬렉션으로 구성됩니다. 이러한 디버그 인터페이스는 모두 COM 기반이므로 디버거 프로그램을 손쉽게 확장해 DCOM(분산 COM)을 사용하여 원격 디버깅을 수행할 수 있습니다.
API 범주
디버깅 API에는 다음과 같은 세 그룹의 인터페이스가 있으며 대개 이러한 인터페이스는 모두 CLR 디버거에 사용되고 비관리 코드로 구현됩니다.
CLR 응용 프로그램의 디버깅을 지원하는 인터페이스
대개 PDB(프로그램 데이터베이스) 파일에 저장되는 기호 디버그 정보에 대한 액세스를 제공하는 인터페이스
컴퓨터에서 프로세스 및 응용 프로그램 도메인 쿼리를 지원하는 인터페이스
디버깅 API는 다음 두 인터페이스 집합을 추가로 사용합니다.
클래스 및 메서드 형식 정보와 같은 정적 프로그램 정보의 검사를 처리하는 메타데이터 API
관리 코드 디버거에 대해 소스 수준 디버깅을 지원하는 기호 저장소 API
다음 표에 있는 기능 범주로 디버깅 인터페이스를 구성할 수도 있습니다.
API 범주 |
설명 |
|---|---|
등록 |
디버거에서 CLR에 등록하고, 특정 이벤트가 발생할 때 알림을 요청하기 위해 호출하는 인터페이스입니다. |
Notification |
CLR에서 다양한 이벤트를 디버거에 알리고 요청한 정보를 반환하기 위해 사용하는 콜백 인터페이스입니다. 이러한 인터페이스는 디버거를 통해 구현해야 합니다. |
중단점 |
디버거에서 중단점에 대한 정보를 검색하기 위해 호출하는 인터페이스입니다. |
실행 |
디버거에서 디버기 실행을 제어하고 호출 스택에 액세스하기 위해 호출하는 인터페이스입니다. |
정보 |
디버거에서 디버기에 대한 정보를 가져오기 위해 호출하는 인터페이스입니다. |
열거 |
디버거에서 개체를 열거하기 위해 호출하는 인터페이스입니다. |
수정 |
디버거에서 디버깅할 코드를 수정하기 위해 호출하는 인터페이스입니다. |
지원 환경
CLR에서 지원하는 모든 프로세서와 운영 체제에서 CLR 디버깅 기능을 사용할 수 있지만 다음과 같은 예외가 있습니다.
64비트 운영 체제에서는 편집하며 계속하기와 혼합 모드 디버깅이 지원되지 않습니다. 64비트 운영 체제에서는 SetIP 메서드(ICorDebugILFrame::SetIP 및 ICorDebugNativeFrame::SetIP)에 대한 추가 제한 사항이 있습니다. 나머지 기능은 모든 프로세서에서 동일하며 포인터 크기, 레지스터 컨텍스트 등의 프로세서별 데이터 표현이 허용됩니다.
Win9x 기반 운영 체제에서는 편집하며 계속하기와 혼합 모드 디버깅이 지원되지 않습니다. 개별 기능에 대한 설명서에 나오는 몇 가지 구체적인 예외가 있지만 나머지 기능은 모든 운영 체제에서 동일합니다.