Параметры конфигурации времени выполнения для отладки и профилирования

В этой статье подробно описаны параметры, которые можно использовать для настройки отладки и профилирования .NET.

Примечание.

.NET 6 стандартизует префикс DOTNET_ вместо COMPlus_ для переменных среды, которые настраивают поведение .NET во время выполнения. Но префикс COMPlus_ будет и дальше работать. Если вы используете предыдущую версию среды выполнения .NET, следует и дальше использовать префикс COMPlus_ для переменных среды.

Включение диагностики

  • Указывает, включены или нет отладчик, профилировщик и диагностика EventPipe.
  • Если этот параметр не задан, диагностика будет включена. Это эквивалентно присвоению значения 1.
Имя настройки Values
runtimeconfig.json Неприменимо Неприменимо
Переменная среды COMPlus_EnableDiagnostics или DOTNET_EnableDiagnostics 1 — включено
0 — отключено

Включить профилирование

  • Указывает, включено ли профилирование для текущего выполняющегося процесса.
  • Если этот параметр не задан, профилирование будет отключено. Это эквивалентно присвоению значения 0.
Имя настройки Values
runtimeconfig.json Неприменимо Неприменимо
Переменная среды CORECLR_ENABLE_PROFILING 0 — отключено
1 — включено

Profiler GUID (GUID профилировщика)

  • Указывает идентификатор GUID профилировщика, загружаемый в выполняющийся процесс.
Имя настройки Values
runtimeconfig.json Неприменимо Неприменимо
Переменная среды CORECLR_PROFILER string-guid

Profiler location (Расположение профилировщика)

  • Указывает путь к библиотеке DLL профилировщика, загружаемой в выполняющийся процесс (либо 32- или 64-разрядный процесс).
  • Если задано более одной переменной, приоритет имеют учитывающие разрядность переменные. Они указывают, какой разрядности профилировщик следует загрузить.
  • Дополнительные сведения см. в разделе Поиск библиотеки профилировщика.
Имя настройки Values
Переменная среды 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 отключены, не все управляемые вызывающие сайты будут правильно разрешены.
  • В зависимости от версии ядра Linux оба формата поддерживаются perf средством.
  • Включение карт perf или jit-дампов приводит к 10-20% затрат. Чтобы свести к минимуму влияние на производительность, рекомендуется выборочно включить карты perf или дампы jit, но не оба.

В следующей таблице сравниваются карты perf и карты jit.

Формат Description Поддерживается на
Карты Perf Выдает /tmp/perf-<pid>.mapсимвольные сведения для динамически созданного кода.
Выдает сведения о символах /tmp/perfinfo-<pid>.mapмодуля ReadyToRun (R2R) и используется PerfCollect.
Карты perf поддерживаются во всех версиях ядра Linux.
Дампы Jit Формат jit дампа заменяет карты perf и содержит более подробную символьную информацию. При включении jit-дампы выводятся в /tmp/jit-<pid>.dump файлы. Ядра Linux версии 5.4 или более поздней версии.
Имя настройки Values
runtimeconfig.json Неприменимо Неприменимо
Переменная среды COMPlus_PerfMapEnabled или DOTNET_PerfMapEnabled 0 — отключено
1 — карты perf и jit-дампы включены
2 — включенные дампы jit
3 — карты perf включено

Perf log markers (Маркеры журналов производительности)

  • Включает или отключает указанный сигнал, который будет принят и проигнорирован в качестве маркера в журналах производительности.
  • Если этот параметр не задан, указанный сигнал не будет проигнорирован. Это эквивалентно присвоению значения 0.
Имя настройки Values
runtimeconfig.json Неприменимо Неприменимо
Переменная среды COMPlus_PerfMapIgnoreSignal или DOTNET_PerfMapIgnoreSignal 0 — отключено
1 — включено

Примечание.

Этот параметр игнорируется, если параметр DOTNET_PerfMapEnabled не задан или имеет значение 0 (т. е. отключен).