次の方法で共有


登録不要のプロファイラーの起動とアタッチ

.NET Framework Version 4 以降では、プロファイラーを、アプリケーションの起動時にアタッチする (起動時読み込み) ことも、アプリケーションの実行中にアタッチする (アタッチ読み込み) こともできます。 どちらの方法でも、COM コンポーネントとして登録されていないプロファイラーを起動できます。

この 2 つの方法では、異なる手順を使用してプロファイラーを起動します。それぞれの方法について、以下で説明します。

起動時読み込みのプロファイラー

起動時読み込みのプロファイラーは、プロファイル対象のアプリケーションが起動されるときに読み込まれます。 .NET Framework 4 より前は、起動時に読み込む方法がプロファイラーを読み込む唯一の方法でした。 プロファイラーは登録しておく必要があり、次の環境変数の値を使用して検索されていました。

  • COR_ENABLE_PROFILING=1

  • COR_PROFILER={プロファイラーの CLSID}

共通言語ランタイム (CLR: Common Language Runtime) では、COR_PROFILER の CLSID を使用して、レジストリの HKEY_CLASSES_ROOT からプロファイラーを検索していました。

.NET Framework 4 以降では、これまでどおりプロファイラーを登録できますが、レジストリを検索する前に別の環境変数がチェックされます。

  • COR_PROFILER_PATH=プロファイラー DLL の完全パス

COR_PROFILER_PATH が存在する場合、その値を使用してプロファイラーが検索され、レジストリの検索は省略されます。

メモ:

  • COR_PROFILER_PATH は省略できます。 COR_PROFILER_PATH を指定しない場合、プロファイラーの CLSID を使用して、レジストリでプロファイラーのパスが検索されます。

  • COR_PROFILER_PATH を指定し、プロファイラーの登録も行う場合、COR_PROFILER_PATH が優先されます。 COR_PROFILER_PATH が無効なパスを指している場合は、プロファイラーが登録されていても、プロファイラーの読み込みは失敗します。

  • COR_PROFILER は常に指定する必要があります。 COR_PROFILER_PATH を指定した場合、レジストリの検索は省略されます。ただし、その場合でも、CreateInstance の呼び出しには COR_PROFILER の CLSID が必要です。

アタッチ読み込みのプロファイラー

.NET Framework 4 以降では、実行中のアプリケーションにプロファイラーをアタッチできます。 この機能の詳細については、「プロファイラーのアタッチとデタッチ」を参照してください。アタッチ読み込みのプロファイラーでは、ICLRProfiling::AttachProfiler メソッドの wszProfilerPath パラメーターを使用して、プロファイラー DLL ファイルの場所を検索します。wszProfilerPath が null の場合、ランタイムでは、pClsidProfiler パラメーターで指定されている CLSID をレジストリで検索して、プロファイラーを見つけます。

参照

概念

プロファイリングの概要

その他の技術情報

プロファイル (アンマネージ API リファレンス)

アンマネージ API リファレンス