本文详细介绍了可用于配置 .NET 调试和分析的设置。
注释
从 .NET 11 开始,探查器环境变量支持和DOTNETCORECLR前缀。 前缀 DOTNET 是新的标准; CORECLR 保留为向后兼容性,将来可能会删除。
启用诊断
- 配置调试器、探查器和 EventPipe 诊断是启用或禁用的。
- 如果省略此设置,则会启用诊断。 它等效于将值设置为
1。
|
设置名称 |
价值观 |
|
runtimeconfig.json |
N/A |
N/A |
|
环境变量 |
DOTNET_EnableDiagnostics |
1 - 启用
0 - 禁用 |
启用分析
- 配置是否为当前正在运行的进程启用分析。
- 如果省略此设置,则会禁用分析。 它等效于将值设置为
0。
- 若要加载探查器,除了启用分析之外,还需要使用这些设置配置探查器 GUID 和探查器位置。
|
设置名称 |
价值观 |
|
runtimeconfig.json |
N/A |
N/A |
|
环境变量 |
DOTNET_ENABLE_PROFILING |
0 - 禁用
1 - 启用 |
探查器 GUID
- 指定要加载到当前正在运行的进程中的探查器的 GUID。
|
设置名称 |
价值观 |
|
runtimeconfig.json |
N/A |
N/A |
|
环境变量 |
CORECLR_PROFILER 或 DOTNET_PROFILER |
string-guid |
探查器位置
启用分析后,可以通过两种方式加载探查器:使用环境变量(跨平台)或通过注册表(仅限 Windows)。 如果同时指定了两者,探查器路径环境变量优先于注册表中的任何 COM 库路径。
环境变量(跨平台)
- 指定要加载到当前正在运行的进程(或 32 位或 64 位进程)的探查器 DLL 的路径。
- 如果设置了多个变量,则特定于位的变量优先。 它们指定要加载的探查器的位数。
|
设置名称 |
价值观 |
|
环境变量 |
CORECLR_PROFILER_PATH 或 DOTNET_PROFILER_PATH |
string-path |
|
环境变量 |
CORECLR_PROFILER_PATH_32 或 DOTNET_PROFILER_PATH_32 |
string-path |
|
环境变量 |
CORECLR_PROFILER_PATH_64 或 DOTNET_PROFILER_PATH_64 |
string-path |
|
环境变量 |
CORECLR_PROFILER_PATH_ARM32 或 DOTNET_PROFILER_PATH_ARM32 |
string-path |
|
环境变量 |
CORECLR_PROFILER_PATH_ARM64 或 DOTNET_PROFILER_PATH_ARM64 |
string-path |
通过注册表(仅限 Windows)
DOTNET_PROFILER_PATH*在 Windows 上运行时未设置环境变量时,coreclr 会从DOTNET_PROFILER注册表中查找 CLSID,以查找探查器 DLL 的完整路径。 与任何 COM 服务器 DLL 一样,探查器的 CLSID 在HKEY_CLASSES_ROOT下查找,后者合并了 HKLM 和 HKCU 中的类。
导出性能映射和 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 |
|
环境变量 |
DOTNET_PerfMapEnabled |
0 - 禁用
1 - 已启用 perf 映射和 jit 转储
2 - 已启用 jit 转储
3 - 已启用性能映射 |
性能日志标记
- 启用或禁用要接受和忽略的指定信号作为性能日志中的标记。
- 如果省略此设置,则不会忽略指定的信号。 它等效于将值设置为
0。
|
设置名称 |
价值观 |
|
runtimeconfig.json |
N/A |
N/A |
|
环境变量 |
DOTNET_PerfMapIgnoreSignal |
0 - 禁用
1 - 启用 |
注释
如果省略或设置为0(即禁用),则忽略此设置。