ローダー ETW イベント

これらのイベントは、アプリケーションのドメイン、アセンブリ、およびモジュールのロードとアンロードに関連する情報を収集します。

すべてのローダー イベントは、 LoaderKeyword (0x8) キーワードで発生します。 DCStart および DCEnd のイベントは、StartRundown/EndRundown が有効になっている LoaderRundownKeyword (0x8) で発生します。 (詳細については、「 CLR ETW Keywords and Levels」を参照してください)。

アプリケーション ドメイン イベント

次の表に、キーワードとレベルを示します。

イベントを発生させるキーワード イベント Level
LoaderKeyword (0x8) AppDomainLoad_V1 および AppDomainUnLoad_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 ローダー アセンブリ イベント

次の表に、キーワードとレベルを示します。

イベントを発生させるキーワード イベント Level
LoaderKeyword (0x8) AssemblyLoad および AssemblyUnload 情報提供 (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。

モジュール イベント

次の表に、キーワードとレベルを示します。

イベントを発生させるキーワード イベント Level
LoaderKeyword (0x8) ModuleLoad_V2 および ModuleUnload_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" で始まるフィールド名は、マネージド コンパイラによって生成された CIL モジュール (C# や Visual Basic コンパイラなど) に対応するマネージド PDB を参照します。 この PDB では、マネージド PDB 形式が使用され、元のマネージド ソース コードの要素 (ファイル、行番号、シンボル名など) が、CIL モジュールにコンパイルされる CIL 要素にどのようにマップされるかについて説明します。

  • "NativePdb"で始まるフィールド名は、 NGEN createPDBを呼び出すことによって生成された NGen PDB を参照します。 この PDB は、ネイティブ PDB 形式を使用して、ファイル、行番号、およびシンボルの名前など、元のマネージド ソース コードからの要素が NGen モジュールにコンパイルされているネイティブ要素にどのようにマップされるかについて説明します。

CLR ドメイン モジュール イベント

次の表に、キーワードとレベルを示します。

イベントを発生させるキーワード イベント Level
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 Image Load イベントは、イメージが読み込まれ、読み込まれたイメージの仮想アドレスが含まれている場合は必ず記録されます。

モジュールの範囲イベントは、4 以上のすべての ETW レベルで発行され、情報イベントに分類されます。

関連項目