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


Сбор дампов при сбое

Настройка приложения для сбора дампа при аварийном завершении выполняется путем задания определенных переменных среды. Это полезно, если вы хотите получить представление о причинах сбоя. Например, запись дампа при возникновении исключения помогает выявить проблемы путем проверки состояния приложения при его сбое.

В следующей таблице приведены переменные среды, которые можно настроить для сбора дампов при сбое.

Переменная среды Description Default value
COMPlus_DbgEnableMiniDump или DOTNET_DbgEnableMiniDump Если задано значение 1, включите создание дампа ядра. 0
COMPlus_DbgMiniDumpType или DOTNET_DbgMiniDumpType Тип собираемого дампа. Дополнительные сведения см. в разделе "Типы мини-дампов". 2 (Heap)
COMPlus_DbgMiniDumpName или DOTNET_DbgMiniDumpName Файл, в который записывается дамп. Убедитесь, что пользователь, в котором выполняется процесс dotnet, имеет разрешения на запись в указанный каталог. /tmp/coredump.<pid>
COMPlus_CreateDumpDiagnostics или DOTNET_CreateDumpDiagnostics Если задано значение 1, включает ведение журнала диагностики процесса дампа. 0
COMPlus_EnableCrashReport или DOTNET_EnableCrashReport (Требуется .NET 6 или более поздней версии; не поддерживается в Windows.)
Если задано значение 1, среда выполнения создает отчет о сбоях в формате JSON, содержащий сведения о потоках и кадрах стека для аварийного приложения. Имя отчета о сбоях — это путь или имя дампа с добавленным .crashreport.json .
COMPlus_CreateDumpVerboseDiagnostics или DOTNET_CreateDumpVerboseDiagnostics (Требуется .NET 7 или более поздней версии.)
Если задано значение 1, включите подробное ведение журнала диагностики процесса дампа.
0
COMPlus_CreateDumpLogToFile или DOTNET_CreateDumpLogToFile (Требуется .NET 7 или более поздней версии.)
Путь к файлу, в который должны записываться диагностические сообщения.
Если не задано, диагностические сообщения записываются в консоль аварийного приложения.

Примечание.

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

Шаблоны пути к файлам

Начиная с .NET 5, DOTNET_DbgMiniDumpName также можно включить описатели шаблона форматирования, которые будут заполнены динамически:

класса хранения Значение
%% Один символ %
%p Идентификатор идентификатора дампа процесса
%e Имя исполняемого файла процесса
%h Возвращаемое имя узла gethostname()
%t Время дампа, выраженное как секунды с эпохи, 1970-01-01 00:00:00 +0000 (UTC)

Типы мини-дампов

В следующей таблице приведены все значения, которые можно использовать для DOTNET_DbgMiniDumpType. Например, если установить для параметра DOTNET_DbgMiniDumpType значение 1, при сбое будет собираться дамп типа Mini.

Значение Имя Описание
1 Mini Небольшой дампы, содержащий списки модулей, списки потоков, сведения об исключениях и все стеки.
2 Heap Большой и относительно полный дамп, содержащий списки модулей, списки потоков, все стеки, сведения об исключениях, обработку данных и всю память, кроме сопоставленных образов.
3 Triage То же, что и Mini, но удаляет личные сведения пользователей, например пути и пароли.
4 Full Самый большой дамп, содержащий всю память, включая образы модулей.

Только полные дампы поддерживаются моделями приложений AOT с одним файлом и собственными приложениями AOT.