다음을 통해 공유


ICorDebugManagedCallback2::MDANotification 메서드

코드 실행에서 디버깅 중인 애플리케이션에서 MDA(관리되는 디버깅 도우미)가 발생했다는 알림을 제공합니다.

구문

HRESULT MDANotification(
    [in] ICorDebugController  *pController,
    [in] ICorDebugThread      *pThread,
    [in] ICorDebugMDA         *pMDA
);

매개 변수

pController [in] MDA가 발생한 프로세스 또는 애플리케이션 도메인을 노출하는 ICorDebugController 인터페이스에 대한 포인터입니다.

디버거는 결정을 내리기 위해 항상 인터페이스를 쿼리할 수 있지만 컨트롤러가 프로세스인지 애플리케이션 도메인인지에 대해 가정해서는 안 됩니다.

pThread [in] 디버그 이벤트가 발생한 관리되는 스레드를 노출하는 ICorDebugThread 인터페이스에 대한 포인터입니다.

관리되지 않는 스레드에서 MDA가 발생한 경우 pThread 값은 null이 됩니다.

MDA 개체 자체에서 OS(운영 체제) 스레드 ID를 가져와야 합니다.

pMDA [in] MDA 정보를 노출하는 ICorDebugMDA 인터페이스에 대한 포인터입니다.

설명

MDA는 경험적 경고이며 디버깅 중인 애플리케이션의 실행을 다시 시작하기 위해 ICorDebugController::Continue를 호출하는 것을 제외하고는 명시적인 디버거 작업이 필요하지 않습니다.

CLR(공용 언어 런타임)은 어떤 MDA가 실행되고 어떤 데이터가 특정 MDA에 있는지 확인할 수 있습니다. 따라서 디버거는 특정 MDA 패턴이 필요한 기능을 빌드해서는 안 됩니다.

MDA는 MDA가 발생한 직후 큐에 대기 및 실행될 수 있습니다. 이는 런타임이 발생한 MDA를 실행하는 대신 MDA를 실행하기 위한 안전한 지점에 도달할 때까지 기다려야 하는 경우 발생할 수 있습니다. 또한 런타임이 대기 중인 단일 콜백 집합에서 여러 MDA를 실행할 수 있음을 의미합니다("연결" 이벤트 작업과 유사).

CLR이 MDA에서 사용하는 메모리를 재활용할 수 있도록 디버거는 MDANotification 콜백에서 반환된 직후 ICorDebugMDA 인스턴스에 대한 참조를 릴리스해야 합니다. 많은 MDA가 실행 중인 경우 인스턴스를 해제하면 성능이 개선될 수 있습니다.

요구 사항

플랫폼:시스템 요구 사항을 참조하세요.

헤더: CorDebug.idl, CorDebug.h

라이브러리: CorGuids.lib

.NET Framework 버전: 2.0부터 사용 가능

참고 항목