ICorProfilerCallback 인터페이스
프로파일러가 구독한 이벤트가 발생할 때 코드 프로파일러에 알리기 위해 CLR(공용 언어 런타임)에서 사용하는 메서드를 제공합니다.
메서드
메서드 | Description |
---|---|
AppDomainCreationFinished 메서드 | 애플리케이션 도메인이 만들어졌음을 프로파일러에 알립니다. |
AppDomainCreationStarted 메서드 | 애플리케이션 도메인이 만들어지고 있음을 프로파일러에 알립니다. |
AppDomainShutdownFinished 메서드 | 애플리케이션 도메인이 프로세스에서 언로드되었음을 프로파일러에 알립니다. |
AppDomainShutdownStarted 메서드 | 애플리케이션 도메인이 프로세스에서 언로드되고 있음을 프로파일러에 알립니다. |
AssemblyLoadFinished 메서드 | 어셈블리 로드가 완료되었음을 프로파일러에 알립니다. |
AssemblyLoadStarted 메서드 | 어셈블리가 로드되고 있음을 프로파일러에 알립니다. |
AssemblyUnloadFinished 메서드 | 어셈블리가 언로드되었음을 프로파일러에 알립니다. |
AssemblyUnloadStarted 메서드 | 어셈블리가 언로드되고 있음을 프로파일러에 알립니다. |
ClassLoadFinished 메서드 | 클래스가 로드를 완료했음을 프로파일러에 알립니다. |
ClassLoadStarted 메서드 | 클래스가 로드되고 있음을 프로파일러에 알립니다. |
ClassUnloadFinished 메서드 | 클래스 언로드가 완료되었음을 프로파일러에 알립니다. |
ClassUnloadStarted 메서드 | 클래스가 언로드되고 있음을 프로파일러에 알립니다. |
COMClassicVTableCreated 메서드 | 지정된 IID 및 클래스에 대한 RCW(런타임 호출 가능 래퍼)가 만들어졌음을 프로파일러에 알립니다. |
COMClassicVTableDestroyed 메서드 | RCW가 제거되고 있음을 프로파일러에 알립니다. |
ExceptionCatcherEnter 메서드 | 제어가 적절한 catch 블록으로 전달되고 있음을 프로파일러에 알립니다. |
ExceptionCatcherLeave 메서드 | 제어가 적절한 catch 블록 외부로 전달되고 있음을 프로파일러에 알립니다. |
ExceptionCLRCatcherExecute 메서드 | .NET Framework 버전 2.0에서 사용되지 않습니다. |
ExceptionCLRCatcherFound 메서드 | .NET Framework 2.0에서 사용되지 않습니다. |
ExceptionOSHandlerEnter 메서드 | 구현되지 않았습니다. 관리되지 않는 예외 정보가 필요한 프로파일러는 다른 수단을 통해 이 정보를 얻어야 합니다. |
ExceptionOSHandlerLeave 메서드 | 구현되지 않았습니다. 관리되지 않는 예외 정보가 필요한 프로파일러는 다른 수단을 통해 이 정보를 얻어야 합니다. |
ExceptionSearchCatcherFound 메서드 | 예외 처리의 검색 단계에서 throw된 예외에 대한 처리기를 찾았음을 프로파일러에 알립니다. |
ExceptionSearchFilterEnter 메서드 | 사용자 필터가 실행되고 있음을 프로파일러에 알립니다. |
ExceptionSearchFilterLeave 메서드 | 사용자 필터 실행이 방금 완료되었음을 프로파일러에 알립니다. |
ExceptionSearchFunctionEnter 메서드 | 예외 처리의 검색 단계가 함수에 진입했음을 프로파일러에 알립니다. |
ExceptionSearchFunctionLeave 메서드 | 예외 처리의 검색 단계가 함수 검색을 완료했음을 프로파일러에 알립니다. |
ExceptionThrown 메서드 | 예외가 throw되었음을 프로파일러에 알립니다. |
ExceptionUnwindFinallyEnter 메서드 | 예외 처리의 해제 단계가 지정된 함수에 포함된 finally 절에 진입하고 있음을 프로파일러에 알립니다. |
ExceptionUnwindFinallyLeave 메서드 | 예외 처리의 해제 단계가 finally 절을 떠났음을 프로파일러에 알립니다. |
ExceptionUnwindFunctionEnter 메서드 | 프로파일러에 예외 처리의 해제 단계가 함수에 진입했음을 알립니다. |
ExceptionUnwindFunctionLeave 메서드 | 예외 처리의 해제 단계가 함수 해제를 완료했음을 프로파일러에 알립니다. |
FunctionUnloadStarted 메서드 | 런타임이 함수를 언로드하기 시작했음을 프로파일러에 알립니다. |
Initialize 메서드 | 새 CLR 애플리케이션이 시작될 때마다 프로파일러를 초기화하기 위해 호출됩니다. |
JITCachedFunctionSearchFinished 메서드 | NGen.exe를 사용하여 이전에 컴파일된 함수에 대한 검색이 완료되었음을 프로파일러에 알립니다. |
JITCachedFunctionSearchStarted 메서드 | NGen.exe를 사용하여 이전에 컴파일된 함수에 대한 검색이 시작되었음을 프로파일러에 알립니다. |
JITCompilationFinished 메서드 | JIT 컴파일러가 함수 컴파일을 완료했음을 프로파일러에 알립니다. |
JITCompilationStarted 메서드 | JIT(Just-In-Time) 컴파일러가 함수 컴파일을 시작했음을 프로파일러에 알립니다. |
JITFunctionPitched 메서드 | JIT 컴파일된 함수가 메모리에서 제거되었음을 프로파일러에 알립니다. |
JITInlining 메서드 | JIT 컴파일러가 다른 함수와 함께 함수를 삽입하려고 함을 프로파일러에 알립니다. |
ManagedToUnmanagedTransition 메서드 | 관리 코드에서 비관리 코드로의 전환이 발생했음을 프로파일러에 알립니다. |
ModuleAttachedToAssembly 메서드 | 모듈이 부모 어셈블리에 연결되고 있음을 프로파일러에 알립니다. |
ModuleLoadFinished 메서드 | 모듈이 로드를 완료했음을 프로파일러에 알립니다. |
ModuleLoadStarted 메서드 | 모듈이 로드되고 있음을 프로파일러에 알립니다. |
ModuleUnloadFinished 메서드 | 모듈이 언로드를 완료했음을 프로파일러에 알립니다. |
ModuleUnloadStarted 메서드 | 모듈이 언로드되고 있음을 프로파일러에 알립니다. |
MovedReferences 메서드 | 가비지 수집 중에 이동된 개체 참조에 대해 프로파일러에 알립니다. |
ObjectAllocated 메서드 | 힙 내의 메모리가 개체에 할당되었음을 프로파일러에 알립니다. |
ObjectReferences 메서드 | 지정된 개체가 참조하는 메모리의 개체에 대해 프로파일러에 알립니다. |
ObjectsAllocatedByClass 메서드 | 이전 가비지 수집 이후 만들어진 지정된 각 클래스의 인스턴스 수를 프로파일러에 알립니다. |
RemotingClientInvocationFinished 메서드 | 클라이언트에서 원격 호출이 완료될 때까지 실행되었음을 프로파일러에 알립니다. |
RemotingClientInvocationStarted 메서드 | 원격 호출이 시작되었음을 프로파일러에 알립니다. |
RemotingClientReceivingReply 메서드 | 원격 호출의 서버 쪽 부분이 완료되었고 클라이언트가 이제 응답을 수신하고 응답을 처리하려고 한다는 것을 프로파일러에 알립니다. |
RemotingClientSendingMessage 메서드 | 클라이언트가 서버에 요청을 보내고 있음을 프로파일러에 알립니다. |
RemotingServerInvocationReturned 메서드 | 원격 메서드 호출 요청에 대한 응답으로 프로세스가 메서드 호출을 완료했음을 프로파일러에 알립니다. |
RemotingServerInvocationStarted 메서드 | 프로세스가 원격 메서드 호출 요청에 대한 응답으로 메서드를 호출하고 있음을 프로파일러에 알립니다. |
RemotingServerReceivingMessage 메서드 | 프로세스가 원격 메서드 호출 또는 활성화 요청을 수신하고 있음을 프로파일러에 알립니다. |
RemotingServerSendingReply 메서드 | 프로세스가 원격 메서드 호출 요청 처리를 완료했으며 채널을 통해 응답을 전송하려고 함을 프로파일러에 알립니다. |
RootReferences 메서드 | 가비지 수집 후 루트 참조에 대한 정보를 프로파일러에 알립니다. |
RuntimeResumeFinished 메서드 | 런타임이 모든 런타임 스레드를 다시 시작하고 정상 작동으로 돌아왔음을 프로파일러에 알립니다. |
RuntimeResumeStarted 메서드 | 런타임이 모든 런타임 스레드를 다시 시작하고 있음을 프로파일러에 알립니다. |
RuntimeSuspendAborted 메서드 | 런타임이 발생 중인 런타임 일시 중단을 중단했음을 프로파일러에 알립니다. |
RuntimeSuspendFinished 메서드 | 런타임이 모든 런타임 스레드의 일시 중단을 완료했음을 프로파일러에 알립니다. |
RuntimeSuspendStarted 메서드 | 런타임이 모든 런타임 스레드를 일시 중단하려고 함을 프로파일러에 알립니다. |
RuntimeThreadResumed 메서드 | 지정된 스레드가 일시 중단된 후 다시 시작되었음을 프로파일러에 알립니다. |
RuntimeThreadSuspended 메서드 | 지정된 스레드가 일시 중단되었거나 중단될 예정임을 프로파일러에 알립니다. |
Shutdown 메서드 | 애플리케이션이 종료되고 있음을 프로파일러에 알립니다. |
ThreadAssignedToOSThread 메서드 | 관리되는 스레드가 특정 OS(운영 체제) 스레드를 사용하여 구현되고 있음을 프로파일러에 알립니다. |
ThreadCreated 메서드 | 스레드가 만들어졌음을 프로파일러에 알립니다. |
ThreadDestroyed 메서드 | 스레드가 제거되었음을 프로파일러에 알립니다. |
UnmanagedToManagedTransition 메서드 | 비관리 코드에서 관리 코드로의 전환이 발생했음을 프로파일러에 알립니다. |
설명
CLR은 ICorProfilerCallback
(또는 ICorProfilerCallback2) 인터페이스에서 메서드를 호출하여 프로파일러가 구독한 이벤트가 발생할 때 프로파일러에 알립니다. 이는 CLR이 코드 프로파일러와 통신하는 데 사용하는 기본 콜백 인터페이스입니다.
코드 프로파일러는 ICorProfilerCallback
인터페이스의 메서드를 구현해야 합니다. .NET Framework 버전 2.0 이상의 경우 프로파일러는 ICorProfilerCallback2
메서드도 구현해야 합니다. 각 메서드 구현은 성공 시 S_OK 값을, 실패 시 E_FAIL 값을 갖는 HRESULT를 반환해야 합니다. 현재 CLR은 ICorProfilerCallback::ObjectReferences를 제외한 각 콜백에서 반환되는 HRESULT를 무시합니다.
Microsoft Windows 레지스트리에서 코드 프로파일러는 ICorProfilerCallback
및 ICorProfilerCallback2
인터페이스를 구현하는 COM(구성 요소 개체 모델) 개체를 등록해야 합니다. 코드 프로파일러는 ICorProfilerInfo::SetEventMask를 호출하여 알림을 수신하려는 이벤트를 구독합니다. 이는 일반적으로 프로파일러의 ICorProfilerCallback::Initialize 구현에서 수행됩니다. 그러면 프로파일러는 이벤트가 발생하려고 하거나 실행 중인 런타임 프로세스에서 방금 발생했을 때 런타임에서 알림을 수신할 수 있습니다.
참고
프로파일러는 단일 COM 개체를 등록합니다. 프로파일러가 .NET Framework 버전 1.0 또는 1.1을 대상으로 하는 경우 해당 COM 개체는 ICorProfilerCallback
의 메서드만 구현해야 합니다. .NET Framework 버전 2.0 이상을 대상으로 하는 경우 COM 개체는 ICorProfilerCallback2
메서드도 구현해야 합니다.
요구 사항
플랫폼:시스템 요구 사항을 참조하세요.
헤더: CorProf.idl, CorProf.h
라이브러리: CorGuids.lib
.NET Framework 버전: 1.0부터 사용 가능
참고 항목
.NET