Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 5902|Відповідь: 1

[.NET Core] [Справжній бій]. Збої та винятки NET/C# додатків автоматично генерують DMP-дамп-файли

[Копіювати посилання]
Опубліковано 6.11.2022 22:41:42 | | | |
Вимоги: При розробці додатків із використанням .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.

Ресурси:

Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно.




Попередній:Детальне пояснення правил зберігання зображень вкладень Discuz, аватарів та альбомів
Наступний:Практична робота: Використовуйте BundleTransformer замість System.Web.Optimization
 Орендодавець| Опубліковано 2022-11-6 22:44:06 |
Надсилайте дамп-файли:

Після запуску програми визначте, чи має каталог згенерований дамп-файл, якщо так, надішліть файл на вказаний інтерфейс, а потім видаліть файл.
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com