本文详细介绍了可用于配置 .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) 模块提供人工可读名称。 - 如果省略此设置,则会禁用写入 perf 映射和 jit 转储文件。 它等效于将值设置为
0。 - 禁用 perf 映射后,并非所有托管调用网站都将正确解析。
- 该工具支持
perf这两种格式,具体取决于 Linux 内核版本。 - 启用性能映射或 jit 转储可能会导致高达 20% 开销,但通常要少得多。 为了最大程度地降低性能影响,建议有选择地启用性能映射或 jit 转储,但不要同时启用这两者。 仅当应用程序是 JITing 代码时才会产生影响。 通常发生在启动时,但如果应用程序第一次运行新的代码路径,则以后可能会发生这种情况。
下表比较性能映射和 jit 地图。
| Format | Description | 支持 |
|---|---|---|
| Perf 地图 |
/tmp/perf-<pid>.map发出,其中包含动态生成的代码的符号信息。/tmp/perfinfo-<pid>.map发出,其中包括 ReadyToRun (R2R) 模块符号信息,并由 PerfCollect 使用。 |
所有 Linux 内核版本都支持 Perf 映射。 |
| 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 - 已启用性能映射 |
性能日志标记
- 启用或禁用要接受和忽略的指定信号作为性能日志中的标记。
- 如果省略此设置,则不会忽略指定的信号。 它等效于将值设置为
0。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | N/A | N/A |
| 环境变量 |
COMPlus_PerfMapIgnoreSignal 或 DOTNET_PerfMapIgnoreSignal |
0 - 禁用1 - 启用 |
注释
如果省略或设置为0DOTNET_PerfMapEnabled(即禁用),则忽略此设置。