다음을 통해 공유


ICorDebugManagedCallback2::MDANotification 메서드

코드 실행에서 디버깅 중인 애플리케이션에서 MDA(관리 디버깅 도우미)가 발생했음을 알 수 있습니다.

Syntax

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:: 계속 디버그 중인 애플리케이션의 실행을 다시 시작하는 것을 제외하고는 명시적 디버거 작업이 필요하지 않습니다.

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

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

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

요구 사항

플랫폼:.NET 지원 운영 체제를 참조하세요.

머리글: CorDebug.idl, CorDebug.h

도서관: CorGuids.lib

.NET 버전: .NET Framework 2.0 이후 사용 가능

참고하십시오