События загрузчика (трассировка событий Windows)
Эти события собирают сведения о загрузке и выгрузке доменов приложений, сборок и модулей.
Все события загрузчика создаются при использовании ключевого слова LoaderKeyword
(0x8). События DCStart
и DCEnd
создаются при использовании ключевого слова LoaderRundownKeyword
(0x8) с включенным ключевым словом StartRundown
/EndRundown
. (Дополнительные сведения см. в разделе CLR ETW Keywords and Levels.)
События домена приложения
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Мероприятие | Уровень |
---|---|---|
LoaderKeyword (0x8) |
AppDomainLoad_V1 и AppDomainUnLoad_V1 . |
Информационный (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
AppDomainDCStart_V1 |
Информационный (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
AppDomainDCEnd_V1 |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | Идентификатор события | Description |
---|---|---|
AppDomainLoad_V1 (регистрируется для всех доменов приложений) |
156 | Создается каждый раз, когда во время существования процесса создается домен приложения. |
AppDomainUnLoad_V1 |
157 | Создается каждый раз, когда во время существования процесса уничтожается домен приложения. |
AppDomainDCStart_V1 |
157 | Перечисляет домены приложений в течение очистки запуска. |
AppDomainDCEnd_V1 |
158 | Перечисляет домены приложений в течение очистки завершения. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
AppDomainID | win:UInt64 | Уникальный идентификатор домена приложения. |
AppDomainFlags | win:UInt32 | 0x1: домен по умолчанию. 0x2: исполняемый файл. 0x4: домен приложения, бит 28–31: политика общего доступа этого домена. 0: общий домен. |
AppDomainName | win:UnicodeString | Понятное имя домена приложения. Может измениться в течение времени существования процесса. |
AppDomainIndex | win:UInt32 | Индекс этого домена приложения. |
ClrInstanceID | win:UInt16 | Уникальный идентификатор экземпляра CLR или CoreCLR. |
События сборки загрузчика среды CLR
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Мероприятие | Уровень |
---|---|---|
LoaderKeyword (0x8) |
AssemblyLoad и AssemblyUnload . |
Информационный (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
AssemblyDCStart |
Информационный (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
AssemblyDCEnd |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | Идентификатор события | Description |
---|---|---|
AssemblyLoad_V1 |
154 | Наступает, когда сборка загружается. |
AssemblyUnload_V1 |
155 | Наступает, когда сборка выгружается. |
AssemblyDCStart_V1 |
155 | Перечисляет сборки во время очистки запуска. |
AssemblyDCEnd_V1 |
156 | Перечисляет сборки во время очистки завершения. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
AssemblyID | win:UInt64 | Уникальный идентификатор сборки. |
AppDomainID | win:UInt64 | Идентификатор домена этой сборки. |
BindingID | win:UInt64 | Идентификатор, уникальным образом определяющий привязку сборки. |
AssemblyFlags | win:UInt32 | 0x1: сборка, не зависящая от домена. 0x2: динамическая сборка. 0x4: сборка с образом в машинном коде. 0x8: собираемая сборка. |
AssemblyName | win:UnicodeString | Полное имя сборки. |
ClrInstanceID | win:UInt16 | Уникальный идентификатор экземпляра CLR или CoreCLR. |
События модулей
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Мероприятие | Уровень |
---|---|---|
LoaderKeyword (0x8) |
ModuleLoad_V2 и ModuleUnload_V2 . |
Информационный (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
ModuleDCStart_V2 |
Информационный (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
ModuleDCEnd_V2 |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | Идентификатор события | Description |
---|---|---|
ModuleLoad_V2 |
152 | Вызывается при загрузке модуля в течение времени существования процесса. |
ModuleUnload_V2 |
153 | Вызывается при выгрузке модуля в течение времени существования процесса. |
ModuleDCStart_V2 |
153 | Перечисляет модули во время очистки запуска. |
ModuleDCEnd_V2 |
154 | Перечисляет модули во время очистки завершения. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
ModuleID | win:UInt64 | Уникальный идентификатор модуля. |
AssemblyID | win:UInt64 | Идентификатор сборки, в которой находится этот модуль. |
ModuleFlags | win:UInt32 | 0x1: модуль, не зависящий от домена. 0x2: модуль с образом в машинном коде. 0x4: динамический модуль. 0x8: модуль манифеста. |
Reserved1 | win:UInt32 | Зарезервированное поле. |
ModuleILPath | win:UnicodeString | Путь к образу общего промежуточного языка (CIL) для модуля или имени динамического модуля, если это динамическая сборка (завершаемая null). |
ModuleNativePath | win:UnicodeString | Путь к образу модуля в машинном коде, если существует (строка, заканчивающаяся нулем). |
ClrInstanceID | win:UInt16 | Уникальный идентификатор экземпляра CLR или CoreCLR. |
ManagedPdbSignature | win:GUID | Подпись GUID управляемой базы данных программы (PDB), которая соответствует этому модулю. (См. раздел «Примечания».) |
ManagedPdbAge | win:UInt32 | Значение возраста, записанное в управляемую базу данных программы, соответствующую этому модулю. (См. раздел «Примечания».) |
ManagedPdbBuildPath | win:UnicodeString | Путь к расположению, где была выполнена сборка управляемой базы данных программы, соответствующей этому модулю. В некоторых случаях это просто имя файла. (См. раздел «Примечания».) |
NativePdbSignature | win:GUID | Подпись GUID базы данных программы для средства создания машинных образов (NGen), соответствующая этому модулю, если применимо. (См. раздел «Примечания».) |
NativePdbAge | win:UInt32 | Значение возраста, записанное в базе данных программы NGen, соответствующей этому модулю, если применимо. (См. раздел «Примечания».) |
NativePdbBuildPath | win:UnicodeString | Путь к расположению, где была выполнена сборка базы данных программы NGen, соответствующей этому модулю, если применимо. В некоторых случаях это просто имя файла. (См. раздел «Примечания».) |
Замечания
Поля, в именах которых есть строка Pdb, могут использоваться средствами профилирования для поиска баз данных программ, соответствующих модулям, которые были загружены во время сеанса профилирования. Значения этих полей соответствуют данным, записанным в разделах IMAGE_DIRECTORY_ENTRY_DEBUG модуля и обычно используемым отладчиками для поиска баз данных программ, соответствующих загруженным модулям.
Имена полей, начинающиеся с ManagedPdb, ссылаются на управляемый PDB, соответствующий модулю CIL, созданному управляемым компилятором (например, компилятором C# или Visual Basic). Этот PDB использует управляемый формат PDB и описывает, как элементы исходного управляемого исходного исходного кода, такие как файлы, номера строк и имена символов, сопоставляются с элементами CIL, скомпилируемыми в модуль CIL.
Имена полей, которые начинаются с NativePdb, ссылаются на базу данных программы NGen, созданную путем вызова метода
NGEN createPDB
. Эта база данных программы использует машинный формат PDB и описывает порядок сопоставления элементов (файлов, номеров строк и имен символов) из первоначального управляемого исходного кода с машинными элементами MSIL, скомпилированными в модуль NGen.
События модулей домена среды CLR
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Мероприятие | Уровень |
---|---|---|
LoaderKeyword (0x8) |
DomainModuleLoad_V1 |
Информационный (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
DomainModuleDCStart_V1 |
Информационный (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
DomainModuleDCEnd_V1 |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | Идентификатор события | Description |
---|---|---|
DomainModuleLoad_V1 |
151 | Вызывается при загрузке модуля для домена приложения. |
DomainModuleDCStart_V1 |
151 | Перечисляет модули, загруженные для домена приложения во время очистки запуска, и регистрируется для всех доменов приложений. |
DomainModuleDCEnd_V1 |
152 | Перечисляет модули, загруженные для домена приложения во время очистки завершения, и регистрируется для всех доменов приложений. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
ModuleID | win:UInt64 | Определяет сборку, к которой относится этот модуль. |
AssemblyID | win:UInt64 | Идентификатор сборки, в которой находится этот модуль. |
AppDomainID | win:UInt64 | Идентификатор домена приложения, в котором используется этот модуль. |
ModuleFlags | win:UInt32 | 0x1: модуль, не зависящий от домена. 0x2: модуль с образом в машинном коде. 0x4: динамический модуль. 0x8: модуль манифеста. |
Reserved1 | win:UInt32 | Зарезервированное поле. |
ModuleILPath | win:UnicodeString | Путь к изображению CIL для модуля или имени динамического модуля, если это динамическая сборка (завершаемая значение NULL). |
ModuleNativePath | win:UnicodeString | Путь к образу модуля в машинном коде, если существует (строка, заканчивающаяся нулем). |
ClrInstanceID | win:UInt16 | Уникальный идентификатор экземпляра CLR или CoreCLR. |
События диапазона модуля
В таблице ниже показаны ключевое слово и уровень.
Ключевое слово для вызова события | Мероприятие | Уровень |
---|---|---|
PerfTrackKeyWord ) |
ModuleRange |
Информационный (4) |
PerfTrackKeyWord |
ModuleRangeDCStart |
Информационный (4) |
PerfTrackKeyWord |
ModuleRangeDCEnd |
Информационный (4) |
В таблице ниже представлены сведения о событии.
Мероприятие | Идентификатор события | Description |
---|---|---|
ModuleRange |
158 | Это событие присутствует, если загруженный образ генератора образов в машинном коде (NGen) был оптимизирован с помощью IBC, и содержит сведения об активных разделах образа NGen. |
ModuleRangeDCStart |
160 | Событие ModuleRange , инициируемое в начале очистки. |
ModuleRangeDCEnd |
161 | Событие ModuleRange , инициируемое в конце очистки. |
В таблице ниже представлены данные события.
Имя поля | Тип данных | Description |
---|---|---|
ClrInstanceID | win:UInt16 | Однозначно определяет конкретный экземпляр среды CLR в процессе, если загружено несколько экземпляров среды CLR. |
ModuleID | win:UInt64 | Определяет сборку, к которой относится этот модуль. |
RangeBegin | win:UInt32 | Смещение в модуле, представляющее начало диапазона для указанного типа диапазона. |
RangeSize | win:UInt32 | Размер указанного диапазона в байтах. |
RangeType | win:UInt32 | Одно значение, 0x4, используемое для представления неактивных диапазонов IBC. В будущем это поле может представлять больше значений. |
RangeSize1 | win:UInt32 | 0 обозначает недопустимые данные. |
RangeBegin2 | win:UnicodeString |
Замечания
Если загруженный образ NGen в процессе .NET Framework был оптимизирован с помощью IBC, событие ModuleRange
, которое содержит активные диапазоны в образе NGen, регистрируется с идентификаторами moduleID
и ClrInstanceID
. Если образ NGen не оптимизирован с помощью IBC, это событие не регистрируется. Для определения имени модуля это событие необходимо сопоставить с событиями ETW загрузки модуля.
Размер полезной нагрузки для этого события различен; поле Count
указывает число смещений диапазона, которые содержатся в событии. Для определения фактических диапазонов это событие нужно сопоставить с событием Windows IStart
. Событие загрузки образа Windows регистрируется при каждой загрузке образа и содержит виртуальный адрес загруженного образа.
События диапазона модуля инициируются при любом уровне ETW не ниже 4 и классифицируются как информационные.