デバッグとプロファイルのランタイム構成オプション

この記事では、.NET デバッグおよびプロファイルを構成するために使用できる設定について詳しく説明します。

注意

.NET 6 では、.NET の実行時の動作を構成する環境変数のプレフィックスが、COMPlus_ ではなく DOTNET_ に標準化されています。 ただし、プレフィックス COMPlus_ は引き続き機能します。 以前のバージョンの .NET ランタイムを使用している場合は、環境変数に COMPlus_ プレフィックスをまだ使用する必要があります。

診断を有効化する

  • デバッガー、プロファイラー、EventPipe 診断を有効にするか、または無効にするかを構成します。
  • この設定を省略すると、診断は有効になります。 これは、値を 1 に設定した場合と同じです。
設定の名前
runtimeconfig.json N/A N/A
環境変数 COMPlus_EnableDiagnostics または DOTNET_EnableDiagnostics 1 - 有効
0 - 無効

プロファイルを有効にする

  • 現在実行中のプロセスに対してプロファイルを有効にするかどうかを構成します。
  • この設定を省略すると、プロファイルは無効になります。 これは、値を 0 に設定した場合と同じです。
設定の名前
runtimeconfig.json N/A N/A
環境変数 CORECLR_ENABLE_PROFILING 0 - 無効
1 - 有効

プロファイラー GUID

  • 現在実行中のプロセスに読み込むプロファイラーの GUID を指定します。
設定の名前
runtimeconfig.json N/A N/A
環境変数 CORECLR_PROFILER string-guid

プロファイラーの場所

  • 現在実行中のプロセス (32 ビット プロセスまたは 64 ビット プロセス) に読み込むプロファイラー DLL へのパスを指定します。
  • 複数の変数が設定されている場合、ビット固有の変数が優先されます。 これらは、ロードするプロファイラーのビットを指定します。
  • 詳細については、「プロファイラー ライブラリを検索する」を参照してください。
設定の名前
環境変数 CORECLR_PROFILER_PATH string-path
環境変数 CORECLR_PROFILER_PATH_32 string-path
環境変数 CORECLR_PROFILER_PATH_64 string-path

perf マップと jit ダンプをエクスポートする

  • perf マップまたは jit ダンプの選択的有効化を有効または無効にします。 これらのファイルを使うと、Linux の perf ツールなどのサード パーティ製ツールで、動的に生成されたコードとプリコンパイルされた ReadyToRun (R2R) モジュールの呼び出しサイトを特定できます。
  • この設定を省略した場合、perf マップと jit ダンプのファイルの書き出しはどちらも無効になります。 これは、値を 0 に設定した場合と同じです。
  • パフォーマンス マップが無効になっている場合、すべてのマネージド呼び出しサイトが適切に解決されるわけではありません。
  • Linux カーネルのバージョンによっては、両方の形式が perf ツールでサポートされます。
  • perf マップまたは jit ダンプを有効にすると、10 から 20% のオーバーヘッドが発生します。 パフォーマンスへの影響を最小限に抑えるため、perf マップまたは jit ダンプのどちらかを選んで有効にし、両方とも有効にはしないことをお勧めします。

次の表は perf マップと jit ダンプの比較です。

書式 説明 サポート対象
perf マップ 動的に生成されたコードのシンボリック情報を含む /tmp/perf-<pid>.map を出力します。
ReadyToRun (R2R) モジュールのシンボル情報を含み、PerfCollect によって使われる、/tmp/perfinfo-<pid>.map を出力します。
perf マップは、すべての Linux カーネル バージョンでサポートされています。
jit ダンプ jit ダンプ形式は perf マップに代わるもので、いっそう詳細なシンボル情報が含まれています。 これを有効にすると、jit ダンプが /tmp/jit-<pid>.dump ファイルに出力されます。 Linux カーネル バージョン 5.4 以降。
設定の名前
runtimeconfig.json N/A N/A
環境変数 COMPlus_PerfMapEnabled または DOTNET_PerfMapEnabled 0 - 無効
1 - perf マップと jit ダンプの両方を有効にします
2 - jit ダンプを有効にします
3 - perf マップを有効にします

パフォーマンス ログのマーカー

  • 指定したシグナルのパフォーマンス ログでのマーカーとしての受け入れおよび無視を有効または無効にします。
  • この設定を省略すると、指定したシグナルは無視されません。 これは、値を 0 に設定した場合と同じです。
設定の名前
runtimeconfig.json N/A N/A
環境変数 COMPlus_PerfMapIgnoreSignal または DOTNET_PerfMapIgnoreSignal 0 - 無効
1 - 有効

注意

この設定は、DOTNET_PerfMapEnabled が省略されるか、または 0 (無効) に設定されている場合は、無視されます。