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

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

注释

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

启用诊断

  • 配置调试器、探查器和 EventPipe 诊断是启用或禁用的。
  • 如果省略此设置,则会启用诊断。 它等效于将值设置为 1
设置名称 价值观
runtimeconfig.json N/A N/A
环境变量 COMPlus_EnableDiagnosticsDOTNET_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_PerfMapEnabledDOTNET_PerfMapEnabled 0 - 禁用
1 - 已启用 perf 映射和 jit 转储
2 - 已启用 jit 转储
3 - 已启用性能映射

性能日志标记

  • 启用或禁用要接受和忽略的指定信号作为性能日志中的标记。
  • 如果省略此设置,则不会忽略指定的信号。 它等效于将值设置为 0
设置名称 价值观
runtimeconfig.json N/A N/A
环境变量 COMPlus_PerfMapIgnoreSignalDOTNET_PerfMapIgnoreSignal 0 - 禁用
1 - 启用

注释

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