Поделиться через


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

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

Замечание

Начиная с .NET 11 переменные среды профилировщика поддерживают как префиксы, так DOTNET и CORECLR префиксы. Префикс DOTNET является новым стандартом; CORECLR поддерживается для обратной совместимости и может быть удален в будущем.

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

  • Определяет, включена ли или отключена диагностика отладчика, профилировщика и СобытияPipe.
  • Если этот параметр не указан, диагностика включена. Это эквивалентно присвоению значения 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 в реестре, если они указаны.

Переменная среды (перекрестная плата)

  • Указывает путь к библиотеке DLL профилировщика для загрузки в текущий выполняющийся процесс (или 32-разрядный или 64-разрядный процесс).
  • Если задано несколько переменных, переменные, зависящие от битов, имеют приоритет. Они указывают, какая битовая нагрузка профилировщика.
Название настройки Ценности
Переменная среды CORECLR_PROFILER_PATH или DOTNET_PROFILER_PATH строковый путь
Переменная среды CORECLR_PROFILER_PATH_32 или DOTNET_PROFILER_PATH_32 строковый путь
Переменная среды CORECLR_PROFILER_PATH_64 или DOTNET_PROFILER_PATH_64 строковый путь
Переменная среды CORECLR_PROFILER_PATH_ARM32 или DOTNET_PROFILER_PATH_ARM32 строковый путь
Переменная среды CORECLR_PROFILER_PATH_ARM64 или DOTNET_PROFILER_PATH_ARM64 строковый путь

Через реестр (только Для Windows)

DOTNET_PROFILER_PATH* Если переменные среды не заданы во время работы в Windows, coreclr ищет CLSID из DOTNET_PROFILER реестра, чтобы найти полный путь к БИБЛИОТЕКе DLL профилировщика. Как и в любой библиотеке DLL COM-сервера, CLSID профилировщика просматривается в HKEY_CLASSES_ROOT, что объединяет классы из HKLM и HKCU.

Экспорт карт perf и дампов jit

  • Включает или отключает карты perf или дампы jit. Эти файлы позволяют сторонним средствам, таким как средство Linux perf , предоставлять пользовательские имена для динамически созданного кода и предварительно скомпилированных модулей ReadyToRun (R2R).
  • Если этот параметр не указан, запись файлов карты perf и jit дампа отключена. Это эквивалентно присвоению значения 0.
  • Если карты perf отключены, не все управляемые вызывающие сайты будут правильно разрешены.
  • В зависимости от версии ядра Linux оба формата поддерживаются perf средством.
  • Включение карт perf или jit-дампов может вызвать до 20% накладных расходов, хотя часто это гораздо меньше. Чтобы свести к минимуму влияние на производительность, рекомендуется выборочно включить карты perf или дампы jit, но не оба. Влияние происходит только в том случае, если приложение является кодом JITing. Часто возникает при запуске, но это может произойти позже, если приложение выполняет новый путь кода в первый раз.

В следующей таблице сравниваются карты 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 или более поздней версии.
Название настройки Ценности
runtimeconfig.json N/A N/A
Переменная среды DOTNET_PerfMapEnabled 0 — отключено
1 — карты perf и jit-дампы включены
2 — включенные дампы jit
3 — карты perf включено

Маркеры журнала Perf

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

Замечание

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