次の方法で共有


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

この記事では、.NET のデバッグとプロファイリングの構成に使用できる設定について詳しく説明します。

.NET 6 では、.NET ランタイム動作を構成する環境変数の DOTNET_ ではなく、プレフィックス COMPlus_ が標準化されています。 ただし、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

パフォーマンス マップと JIT ダンプをエクスポートする

  • パフォーマンス マップまたは jit ダンプを有効または無効にします。 これらのファイルを使用すると、Linux perf ツールなどのサード パーティ製ツールで、動的に生成されたコードとプリコンパイル済みの ReadyToRun (R2R) モジュールに人間が判読できる名前を提供できます。
  • この設定を省略した場合、パフォーマンス マップ ファイルと jit ダンプ ファイルの書き込みはどちらも無効になります。 これは、値を 0 に設定した場合と同じです。
  • perf マップが無効になっている場合、すべてのマネージド コールサイトが適切に解決されるわけではありません。
  • Linux カーネルのバージョンに応じて、両方の形式が perf ツールでサポートされます。
  • パフォーマンス マップまたは jit ダンプを有効にすると、最大 20% のオーバーヘッドが発生する可能性がありますが、多くの場合、はるかに少なくなります。 パフォーマンスへの影響を最小限に抑えるために、パフォーマンス マップまたは JIT ダンプを選択的に有効にすることをお勧めしますが、両方は有効にしないことをお勧めします。 影響は、アプリケーションが JITing コードである間にのみ発生します。 多くの場合、起動時に発生しますが、アプリケーションが初めて新しいコード パスを実行している場合は、後で発生する可能性があります。

次の表では、パフォーマンス マップと jit マップを比較します。

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

Perf ログ マーカー

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

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