다음을 통해 공유


ICorDebugManagedCallback

업데이트: 2007년 11월

디버거 콜백을 처리하는 메서드를 제공합니다.

interface ICorDebugManagedCallback : IUnknown {
    HRESULT _stdcall Break(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* thread);
    HRESULT _stdcall Breakpoint(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] ICorDebugBreakpoint* pBreakpoint);
    HRESULT _stdcall BreakpointSetError(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] ICorDebugBreakpoint* pBreakpoint, 
                    [in] unsigned long dwError);
    HRESULT _stdcall ControlCTrap([in] ICorDebugProcess* pProcess);
    HRESULT _stdcall CreateAppDomain(
                    [in] ICorDebugProcess* pProcess, 
                    [in] ICorDebugAppDomain* pAppDomain);
    HRESULT _stdcall CreateProcess([in] ICorDebugProcess* pProcess);
    HRESULT _stdcall CreateThread(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* thread);
    HRESULT _stdcall DebuggerError(
                    [in] ICorDebugProcess* pProcess, 
                    [in] HRESULT errorHR, 
                    [in] unsigned long errorCode);
    HRESULT _stdcall EditAndContinueRemap(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] ICorDebugFunction* pFunction, 
                    [in] long fAccurate);
    HRESULT _stdcall EvalComplete(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] ICorDebugEval* pEval);
    HRESULT _stdcall EvalException(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] ICorDebugEval* pEval);
    HRESULT _stdcall Exception(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] long unhandled);
    HRESULT _stdcall ExitAppDomain(
                    [in] ICorDebugProcess* pProcess, 
                    [in] ICorDebugAppDomain* pAppDomain);
    HRESULT _stdcall ExitProcess([in] ICorDebugProcess* pProcess);
    HRESULT _stdcall ExitThread(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* thread);
    HRESULT _stdcall LoadAssembly(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugAssembly* pAssembly);
    HRESULT _stdcall LoadClass(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugClass* c);
    HRESULT _stdcall LoadModule(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugModule* pModule);
    HRESULT _stdcall LogMessage(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] long lLevel, 
                    [in] unsigned short* pLogSwitchName, 
                    [in] unsigned short* pMessage);
    HRESULT _stdcall LogSwitch(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] long lLevel, 
                    [in] unsigned long ulReason, 
                    [in] unsigned short* pLogSwitchName, 
                    [in] unsigned short* pParentName);
    HRESULT _stdcall NameChange(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread);
    HRESULT _stdcall StepComplete(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] ICorDebugStepper* pStepper, 
                    [in] CorDebugStepReason reason);
    HRESULT _stdcall UnloadAssembly(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugAssembly* pAssembly);
    HRESULT _stdcall UnloadClass(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugClass* c);
    HRESULT _stdcall UnloadModule(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugModule* pModule);
    HRESULT _stdcall UpdateModuleSymbols(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugModule* pModule, 
                    [in] IStream* pSymbolStream);
};

메서드

메서드

설명

ICorDebugManagedCallback::Break 메서드

코드 스트림의 Break 명령이 실행될 때 디버거에 알립니다.

ICorDebugManagedCallback::Breakpoint 메서드

중단점이 발생할 때 디버거에 알립니다.

ICorDebugManagedCallback::BreakpointSetError 메서드

함수가 JIT(Just-In-Time) 컴파일되기 전에 설정된 중단점을 CLR(공용 언어 런타임)에서 정확하게 바인딩할 수 없음을 디버거에 알립니다.

ICorDebugManagedCallback::ControlCTrap 메서드

디버깅 중인 프로세스에서 Ctrl+C가 트랩되었음을 디버거에 알립니다.

ICorDebugManagedCallback::CreateAppDomain 메서드

응용 프로그램 도메인이 만들어졌음을 디버거에 알립니다.

ICorDebugManagedCallback::CreateProcess 메서드

프로세스가 처음으로 연결되거나 시작된 경우 디버거에 알립니다.

ICorDebugManagedCallback::CreateThread 메서드

스레드에서 관리 코드를 실행하기 시작했음을 디버거에 알립니다.

ICorDebugManagedCallback::DebuggerError 메서드

CLR의 이벤트를 처리하는 동안 오류가 발생했음을 디버거에 알립니다.

ICorDebugManagedCallback::EditAndContinueRemap 메서드

더 이상 사용되지 않습니다. 다시 매핑 이벤트를 IDE로 보냈음을 디버거에 알립니다.

ICorDebugManagedCallback::EvalComplete 메서드

계산이 완료되었음을 디버거에 알립니다.

ICorDebugManagedCallback::EvalException 메서드

처리되지 않은 예외로 계산이 종료되었음을 디버거에 알립니다.

ICorDebugManagedCallback::Exception 메서드

관리 코드에서 예외가 throw되었음을 디버거에 알립니다.

ICorDebugManagedCallback::ExitAppDomain 메서드

응용 프로그램 도메인이 종료되었음을 디버거에 알립니다.

ICorDebugManagedCallback::ExitProcess 메서드

프로세스가 종료되었음을 디버거에 알립니다.

ICorDebugManagedCallback::ExitThread 메서드

관리 코드를 실행하던 스레드가 종료되었음을 디버거에 알립니다.

ICorDebugManagedCallback::LoadAssembly 메서드

CLR 어셈블리가 성공적으로 로드되었음을 디버거에 알립니다.

ICorDebugManagedCallback::LoadClass 메서드

클래스가 로드되었음을 디버거에 알립니다.

ICorDebugManagedCallback::LoadModule 메서드

CLR 모듈이 성공적으로 로드되었음을 디버거에 알립니다.

ICorDebugManagedCallback::LogMessage 메서드

CLR의 관리되는 스레드에서 EventLog 클래스의 메서드를 호출하여 이벤트를 기록했음을 디버거에 알립니다.

ICorDebugManagedCallback::LogSwitch 메서드

CLR의 관리되는 스레드에서 Switch 클래스의 메서드를 호출하여 디버깅/추적 스위치를 만들거나, 수정하거나, 삭제했음을 디버거에 알립니다.

ICorDebugManagedCallback::NameChange 메서드

응용 프로그램 도메인 또는 스레드의 이름이 변경되었음을 디버거에 알립니다.

ICorDebugManagedCallback::StepComplete 메서드

단계가 완료되었음을 디버거에 알립니다.

ICorDebugManagedCallback::UnloadAssembly 메서드

CLR 어셈블리가 언로드되었음을 디버거에 알립니다.

ICorDebugManagedCallback::UnloadClass 메서드

클래스가 언로드되고 있음을 디버거에 알립니다.

ICorDebugManagedCallback::UnloadModule 메서드

CLR 모듈(DLL)이 언로드되었음을 디버거에 알립니다.

ICorDebugManagedCallback::UpdateModuleSymbols 메서드

CLR 모듈의 기호가 변경되었음을 디버거에 알립니다.

설명

모든 콜백은 serialize되고, 동일한 스레드에서 호출되며, 프로세스와 함께 동기화된 상태로 호출됩니다.

각 콜백 구현에서는 ICorDebugController::Continue를 호출하여 실행을 다시 시작해야 합니다. ICorDebugController::Continue가 콜백이 반환되기 전에 호출되지 않으면 프로세스는 중지된 상태로 유지되고 ICorDebugController::Continue가 호출될 때까지 추가 이벤트 콜백은 발생하지 않습니다.

디버거에서 .NET Framework 버전 2.0 응용 프로그램을 디버깅하고 있는 경우에는 ICorDebugManagedCallback2를 구현해야 합니다. ICorDebugManagedCallback 또는 ICorDebugManagedCallback2의 인스턴스는 ICorDebug::SetManagedHandler에 콜백 개체로 전달됩니다.

요구 사항

플랫폼:.NET Framework 시스템 요구 사항 참조

헤더: CorDebug.idl

라이브러리: CorGuids.lib

.NET Framework 버전: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

참고 항목

참조

ICorDebug

ICorDebugManagedCallback2

기타 리소스

디버깅 인터페이스