この記事では、.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 enabled3 - perf マップが有効 |
Perf ログ マーカー
- perf ログで、指定したシグナルをマーカーとして受け入れて無視することを有効または無効にします。
- この設定を省略した場合、指定したシグナルは無視されません。 これは、値を
0に設定した場合と同じです。
| 設定の名前 | 価値観 | |
|---|---|---|
| runtimeconfig.json | N/A | N/A |
| 環境変数 |
COMPlus_PerfMapIgnoreSignal または DOTNET_PerfMapIgnoreSignal |
0 - 無効1 - 有効 |
注
DOTNET_PerfMapEnabledを省略するか、0 (無効) に設定した場合、この設定は無視されます。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET