Вимоги: При розробці додатків із використанням .NET/C# жодному розробнику неможливо забезпечити стабільне та надійне виконання програми, що може бути пов'язано з логікою коду розробника або робочим середовищем користувачаНемає 100% гарантії, що розроблений вами додаток буде безпроблемнимМати проблему — це не жахливо, але найгірше те, що вона не може знайти причину і вирішити проблему.
Якщо додаток не виконується як слід і відбувається аномальний вихід, як можна автоматично згенерувати DMP-файл дампу для усунення проблеми?
Дамп — це файл, який містить знімок процесу на момент його створення і може використовуватися для перевірки стану додатку. Коли важко підключити відлагоджувач до .NET-додатку, наприклад, до продакшн або CI-середовища, можна використовувати дампи для налагодження додатку. Використання дампів фіксує стан проблемних процесів, і стан можна перевіряти безпосередньо без зупинки застосування.
Збирати дампи
Ви можете використовувати змінні середовища, щоб налаштувати додаток для збору дампів у разі відмови. Це корисно, якщо ви хочете дізнатися причину відмови. Наприклад, захоплення дампів при киданні виключення допомагає виявити проблеми, перевіряючи стан додатка у разі помилки.
У наступній таблиці показані змінні середовища, які ви можете використати для налаштування вашого додатку для збору дампів у разі відмови.
Змінна середовища | Ілюстрації | За промовчанням | | COMPlus_DbgEnableMiniDump чи DOTNET_DbgEnableMiniDump | Якщо встановлено на 1, увімкніть генерацію дампу ядра. | 0 | | COMPlus_DbgMiniDumpType чи DOTNET_DbgMiniDumpType | Тип сміттєзвалища, яке треба збирати. Детальніше дивіться таблицю нижче | 2 (MiniDumpWithPrivateReadWriteMemory) | | COMPlus_DbgMiniDumpName чи DOTNET_DbgMiniDumpName | Запиши шлях файлу до дампу. Переконайтеся, що користувач, який виконує процес dotnet, має доступ до запису до вказаної директорії. | /tmp/coredump.<pid> | | COMPlus_CreateDumpDiagnostics чи DOTNET_CreateDumpDiagnostics | Якщо встановлено на 1, увімкніть діагностичне журналування процесу дампу. | 0 | | COMPlus_EnableCrashReport чи DOTNET_EnableCrashReport | (Потрібен .NET 6 або пізніше) Якщо встановлено 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 Core 6
Використовуйте VS 2022 для тестування нового тесту додатку .NET Core 6 з таким кодом:
Запустіть програму за допомогою команди cmd, як показано на зображенні нижче:
COMPlus_EnableCrashReport=1 COMPlus_DbgEnableMiniDump=1 COMPlus_DbgMiniDumpName="C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp" COMPlus_CreateDumpDiagnostics=1 Невирішений виняток. System.Exception: itsvse.com у Програмі. <Main>$(String[] args) у C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:line 9 [створений умп] Написання мінідампу з купою у файл C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp [створений умп] Дамп успішно написано
Ви можете побачити, що після аномального крашання програми вона успішно знаходиться у вказаному ми директоріїЗгенерується файл дампу .dmpЩодо аналізу — це вже інша справа.
Універсальні налаштування платформи Windows
У Windows Windows Error Reporting (WER) можна налаштувати для генерації дампів при збоях додатка.
Цей метод працює для всіх програм, а не лише для . .NET-програми, такі як C++, Go тощо; І і. МЕРЕЖІ. Версія для NET Core
- Відкритий regedit.exe
- Відкрийте каталог HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
- Створіть папку KEY DumpFolder типу REG_EXPAND_SZ для налаштування каталогу, де зберігаються дамп-файли
- Ви також можете створити KEY DumpCount типу REG_DWORD налаштувати загальну кількість дампів
Звісно, ви також можете налаштувати ці команди PowerShell:
Згідно з наведеною вище конфігурацією, якщо програма виходить аномально, вона створює дамп програми в каталогу %LOCALAPPDATA%\CrashDumps.
Ресурси:
Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно.
|