다음을 통해 공유


로더 ETW 이벤트

이러한 이벤트는 애플리케이션 do기본, 어셈블리 및 모듈 로드 및 언로드와 관련된 정보를 수집합니다.

모든 로더 이벤트는 LoaderKeyword (0x8) 키워드에서 발생합니다. DCStartDCEnd 이벤트는 StartRundown/EndRundown이 사용되는 LoaderRundownKeyword(0x8)에서 발생합니다. 자세한 내용은 CLR ETW Keywords and Levels을 참조하세요.

애플리케이션 도메인 이벤트

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 이벤트 수준
LoaderKeyword (0x8) AppDomainLoad_V1AppDomainUnLoad_V1 정보(4)
LoaderRundownKeyword (0x8) +

StartRundownKeyword
AppDomainDCStart_V1 정보(4)
LoaderRundownKeyword (0x8) +

EndRundownKeyword
AppDomainDCEnd_V1 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 설명
AppDomainLoad_V1 (모든 애플리케이션 도메인에 대해 기록됨) 156 프로세스 수명 중에 애플리케이션 도메인이 만들어질 때마다 발생합니다.
AppDomainUnLoad_V1 157 프로세스 수명 중에 애플리케이션 도메인이 삭제될 때마다 발생합니다.
AppDomainDCStart_V1 157 시작 런다운 중에 애플리케이션 도메인을 열거합니다.
AppDomainDCEnd_V1 158 끝 런다운 중에 애플리케이션 도메인을 열거합니다.

다음 표에서는 이벤트 데이터를 보여 줍니다.

필드 이름 데이터 형식 설명
AppDomainID win:UInt64 애플리케이션 도메인의 고유 식별자입니다.
AppDomainFlags win:UInt32 0x1: 기본 도메인.

0x2: 실행 파일.

0x4: 애플리케이션 도메인, 비트 28-31: 이 도메인의 정책 공유.

0: 공유 도메인.
AppDomainName win:UnicodeString 친숙한 애플리케이션 도메인 이름입니다. 프로세스 수명 중에 변경될 수 있습니다.
AppDomainIndex win:UInt32 이 애플리케이션 도메인의 인덱스입니다.
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스에 대한 고유 ID입니다.

CLR 로더 어셈블리 이벤트

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 이벤트 수준
LoaderKeyword (0x8) AssemblyLoadAssemblyUnload 정보(4)
LoaderRundownKeyword (0x8) +

StartRundownKeyword
AssemblyDCStart 정보(4)
LoaderRundownKeyword (0x8) +

EndRundownKeyword
AssemblyDCEnd 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 설명
AssemblyLoad_V1 154 어셈블리가 로드될 때 발생합니다.
AssemblyUnload_V1 155 어셈블리가 언로드될 때 발생합니다.
AssemblyDCStart_V1 155 시작 런다운 중에 어셈블리를 열거합니다.
AssemblyDCEnd_V1 156 끝 런다운 중에 어셈블리를 열거합니다.

다음 표에서는 이벤트 데이터를 보여 줍니다.

필드 이름 데이터 형식 설명
AssemblyID win:UInt64 어셈블리의 고유 ID입니다.
AppDomainID win:UInt64 이 어셈블리의 도메인 ID입니다.
BindingID win:UInt64 어셈블리 바인딩을 고유하게 식별하는 ID입니다.
AssemblyFlags win:UInt32 0x1: 도메인 중립 어셈블리.

0x2: 동적 어셈블리.

0x4: 어셈블리에 네이티브 이미지 있음.

0x8: 수집 가능한 어셈블리.
AssemblyName win:UnicodeString 정규화된 어셈블리 이름입니다.
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스에 대한 고유 ID입니다.

모듈 이벤트

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 이벤트 수준
LoaderKeyword (0x8) ModuleLoad_V2ModuleUnload_V2 정보(4)
LoaderRundownKeyword (0x8) +

StartRundownKeyword
ModuleDCStart_V2 정보(4)
LoaderRundownKeyword (0x8) +

EndRundownKeyword
ModuleDCEnd_V2 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 설명
ModuleLoad_V2 152 프로세스 수명 중에 모듈이 로드될 때 발생합니다.
ModuleUnload_V2 153 프로세스 수명 중에 모듈이 언로드될 때 발생합니다.
ModuleDCStart_V2 153 시작 런다운 중에 모듈을 열거합니다.
ModuleDCEnd_V2 154 끝 런다운 중에 모듈을 열거합니다.

다음 표에서는 이벤트 데이터를 보여 줍니다.

필드 이름 데이터 형식 설명
ModuleID win:UInt64 모듈의 고유 ID입니다.
AssemblyID win:UInt64 이 모듈이 있는 어셈블리의 ID입니다.
ModuleFlags win:UInt32 0x1: 도메인 중립 모듈.

0x2: 모듈에 네이티브 이미지 있음.

0x4: 동적 모듈.

0x8: 매니페스트 모듈.
Reserved1 win:UInt32 예약된 필드입니다.
ModuleILPath win:UnicodeString 모듈에 대한 CIL(공용 중간 언어) 이미지의 경로이거나 동적 어셈블리인 경우 동적 모듈 이름(null로 종료됨)입니다.
ModuleNativePath win:UnicodeString 있는 경우 모듈 네이티브 이미지의 경로입니다(null로 종료됨).
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스에 대한 고유 ID입니다.
ManagedPdbSignature win:GUID 이 모듈과 일치하는 관리되는 PDB(프로그램 데이터베이스)의 GUID 서명입니다. 설명 부분을 참조하세요.
ManagedPdbAge win:UInt32 이 모듈과 일치하는 관리되는 PDB에 작성된 기간 수입니다. 설명 부분을 참조하세요.
ManagedPdbBuildPath win:UnicodeString 이 모듈과 일치하는 관리되는 PDB가 빌드된 위치의 경로입니다. 경우에 따라 파일 이름일 수도 있습니다. 설명 부분을 참조하세요.
NativePdbSignature win:GUID 이 모듈과 일치하는 네이티브 이미지 생성기(NGen) PDB의 GUID 서명입니다(적용 가능한 경우). 설명 부분을 참조하세요.
NativePdbAge win:UInt32 이 모듈과 일치하는 NGen PDB에 작성된 기간 수입니다(적용 가능한 경우). 설명 부분을 참조하세요.
NativePdbBuildPath win:UnicodeString 이 모듈과 일치하는 NGen PDB가 빌드된 위치의 경로입니다(적용 가능한 경우). 경우에 따라 파일 이름일 수도 있습니다. 설명 부분을 참조하세요.

설명

  • 이름에 "Pdb"가 포함된 필드는 도구를 프로파일링하여 프로파일링 세션 중에 로드된 모듈과 일치하는 PDB를 찾는 방식으로 사용할 수 있습니다. 이들 필드 값은 일반적으로 로드된 모듈과 일치하는 PDB를 찾도록 도와주는 디버거에서 사용되는 모듈의 IMAGE_DIRECTORY_ENTRY_DEBUG 섹션에 작성된 데이터에 해당합니다.

  • "ManagedPdb"로 시작하는 필드 이름은 관리되는 컴파일러(예: C# 또는 Visual Basic 컴파일러)에서 생성된 CIL 모듈에 해당하는 관리되는 PDB를 참조합니다. 이 PDB는 관리되는 PDB 형식을 사용하며 파일, 줄 번호 및 기호 이름과 같은 원래 관리 소스 코드의 요소가 CIL 모듈로 컴파일된 CIL 요소에 매핑되는 방법을 설명합니다.

  • "NativePdb"로 시작하는 필드 이름은 NGEN createPDB를 호출하여 생성된 NGen PDB를 나타냅니다. 이 PDB는 네이티브 PDB 형식을 사용하고 원래 관리되는 소스 코드의 요소(예: 파일, 줄 번호 및 기호 이름)를 NGen 모듈로 컴파일된 네이티브 요소에 매핑하는 방법을 설명합니다.

CLR 도메인 모듈 이벤트

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 이벤트 수준
LoaderKeyword (0x8) DomainModuleLoad_V1 정보(4)
LoaderRundownKeyword (0x8) +

StartRundownKeyword
DomainModuleDCStart_V1 정보(4)
LoaderRundownKeyword (0x8) +

EndRundownKeyword
DomainModuleDCEnd_V1 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 설명
DomainModuleLoad_V1 151 애플리케이션 도메인에 대한 모듈이 로드될 때 발생합니다.
DomainModuleDCStart_V1 151 시작 런다운 중에 애플리케이션 도메인에 대해 로드된 모듈을 열거하고 모든 애플리케이션 도메인에 대해 기록됩니다.
DomainModuleDCEnd_V1 152 끝 런다운 중에 애플리케이션 도메인에 대해 로드된 모듈을 열거하고 모든 애플리케이션 도메인에 대해 기록됩니다.

다음 표에서는 이벤트 데이터를 보여 줍니다.

필드 이름 데이터 형식 설명
ModuleID win:UInt64 이 모듈이 속한 어셈블리를 식별합니다.
AssemblyID win:UInt64 이 모듈이 있는 어셈블리의 ID입니다.
AppDomainID win:UInt64 이 모듈이 사용되는 애플리케이션 도메인의 ID입니다.
ModuleFlags win:UInt32 0x1: 도메인 중립 모듈.

0x2: 모듈에 네이티브 이미지 있음.

0x4: 동적 모듈.

0x8: 매니페스트 모듈.
Reserved1 win:UInt32 예약된 필드입니다.
ModuleILPath win:UnicodeString 모듈에 대한 CIL 이미지의 경로이거나 동적 어셈블리인 경우 동적 모듈 이름(null 종료)입니다.
ModuleNativePath win:UnicodeString 있는 경우 모듈 네이티브 이미지의 경로입니다(null로 종료됨).
ClrInstanceID win:UInt16 CLR 또는 CoreCLR 인스턴스에 대한 고유 ID입니다.

모듈 범위 이벤트

다음 표에서는 키워드와 수준을 보여 줍니다.

이벤트를 발생시키기 위한 키워드 이벤트 수준
PerfTrackKeyWord) ModuleRange 정보(4)
PerfTrackKeyWord ModuleRangeDCStart 정보(4)
PerfTrackKeyWord ModuleRangeDCEnd 정보(4)

다음 표에서는 이벤트 정보를 보여 줍니다.

이벤트 이벤트 ID 설명
ModuleRange 158 이 이벤트는 로드된 네이티브 이미지 생성기(NGen) 이미지가 IBC로 최적화된 경우 존재하고 NGen 이미지의 핫 섹션에 대한 정보를 포함합니다.
ModuleRangeDCStart 160 런다운 시작 시 발생한 ModuleRange 이벤트입니다.
ModuleRangeDCEnd 161 런다운 종료 시 발생한 ModuleRange 이벤트입니다.

다음 표에서는 이벤트 데이터를 보여 줍니다.

필드 이름 데이터 형식 설명
ClrInstanceID win:UInt16 CLR의 여러 인스턴스가 로드된 경우 프로세스 CLR의 특정 인스턴스를 고유하게 식별합니다.
ModuleID win:UInt64 이 모듈이 속한 어셈블리를 식별합니다.
RangeBegin win:UInt32 지정된 범위 형식에 대한 범위 시작을 나타내는 모듈의 오프셋입니다.
RangeSize win:UInt32 지정된 범위의 크기(바이트)입니다.
RangeType win:UInt32 콜드 IBC 범위를 나타내는 단일 값, 0x4입니다. 이 필드는 나중에 더 많은 값을 나타낼 수 있습니다.
RangeSize1 win:UInt32 0은 잘못된 데이터를 나타냅니다.
RangeBegin2 win:UnicodeString

설명

.NET Framework 프로세스에서 로드된 NGen 이미지가 IBC로 최적화된 경우 NGen 이미지의 핫 범위를 포함하는 ModuleRange 이벤트가 moduleIDClrInstanceID와 함께 기록됩니다. NGen 이미지가 IBC로 최적화되지 않으면 이 이벤트가 기록되지 않습니다. 모듈 이름을 확인하려면 이 이벤트를 모듈 로드 ETW 이벤트와 대조해야 합니다.

이 이벤트의 페이로드 크기는 변수이고, Count 필드는 이벤트에 포함된 범위 오프셋 수를 나타냅니다. 실제 범위를 확인하려면 이 이벤트를 Windows IStart 이벤트와 대조해야 합니다. Windows 이미지 로드 이벤트는 이미지가 로드될 때마다 기록되고 로드된 이미지의 가상 주소를 포함합니다.

모듈 범위 이벤트는 ETW 수준이 4보다 크거나 같으면 발생하고 정보 제공 이벤트로 분류됩니다.

참고 항목