用于调试和分析的运行时配置选项

本文详细介绍可用于配置 .NET 调试和分析的设置。

注意

.NET 6 为用于配置 .NET 运行时行为的环境变量标准化前缀 DOTNET_ 而不是 COMPlus_。 但是,COMPlus_ 前缀仍将继续正常工作。 如果使用的是早期版本的 .NET 运行时,则环境变量仍应该使用 COMPlus_ 前缀。

启用诊断

  • 配置是启用还是禁用调试器、探查器和 EventPipe 诊断。
  • 如果省略此设置,则会启用诊断。 它等效于将值设置为 1
设置名
runtimeconfig.json 不可用 不可用
环境变量 COMPlus_EnableDiagnosticsDOTNET_EnableDiagnostics 1 - 启用
0 - 禁用

启用分析

  • 配置是否为当前正在运行的进程启用分析。
  • 如果省略此设置,则会禁用分析。 它等效于将值设置为 0
设置名
runtimeconfig.json 不可用 不可用
环境变量 CORECLR_ENABLE_PROFILING 0 - 禁用
1 - 启用

探查器 GUID

  • 指定要加载到当前正在运行的进程中的探查器 GUID。
设置名
runtimeconfig.json 不可用 不可用
环境变量 CORECLR_PROFILER string-guid

探查器位置

  • 指定要加载到当前正在运行的进程(或 32 位/64 位进程)的探查器 DLL 路径。
  • 如果设置了多个变量,则优先使用指定位数的变量。 它们指定要加载的探查器的位数。
  • 有关详细信息,请参阅 Finding the profiler library(查找探查器库)。
设置名
环境变量 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
  • 禁用 perf 映射时,并非所有托管的调用站点都将正确解析。
  • perf 工具支持这两种格式,具体取决于 Linux 内核版本。
  • 启用 perf 映射或 jit 转储会导致 10-20% 的开销。 为了最大程度地降低性能影响,建议有选择地启用 perf 映射或 jit 转储,但不要同时启用这两者。

下表比较了 perf 映射和 jit 映射。

格式 说明 支持平台
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 不可用 不可用
环境变量 COMPlus_PerfMapEnabledDOTNET_PerfMapEnabled 0 - 禁用
1 - 同时启用了 perf 映射和 jit 转储
2 - 启用了 jit 转储
3 - 启用了 perf 映射

性能日志标记

  • 允许或禁止在性能日志中将指定信号作为标记予以接受和忽略。
  • 如果省略此设置,则不会忽略指定的信号。 它等效于将值设置为 0
设置名
runtimeconfig.json 不可用 不可用
环境变量 COMPlus_PerfMapIgnoreSignalDOTNET_PerfMapIgnoreSignal 0 - 禁用
1 - 启用

注意

如果省略 DOTNET_PerfMapEnabled 或将其设置为 0(即禁用),则将忽略此设置。