Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 5902|Отговор: 1

[.NET Core] [Истински бой]. Сривовете и изключенията на NET/C# приложения автоматично генерират DMP dump файлове

[Копирай линк]
Публикувано на 2022-11-6 22:41:42 | | | |
Изисквания: При разработване на приложения с .NET/C# е невъзможно за който и да е разработчик да гарантира стабилно и стабилно изпълнение на програмата, което може да е свързано с логиката на кода на разработчика или с работещата среда на потребителяНяма 100% гаранция, че приложението, което разработвате, ще бъде без проблемиНе е ужасно да имаш проблем, но ужасното е, че има проблем, който не може да открие причината и да го реши.

Ако приложението не се изпълни както се очаква и настъпи необичайно изходене, как може автоматично да се генерира DMP dump файл за отстраняване на проблема?
Dump е файл, който съдържа моментна снимка на процеса при създаването му и може да се използва за проверка на състоянието на приложението. Когато е трудно да се прикачи дебъгер към .NET приложение, като продукционна или CI среда, можете да използвате dump-ове, за да дебъгнете приложението. Използването на dump-ове улавя състоянието на проблемните процеси и състоянието може да се проверява директно без спиране на приложението.

Събиране на отпадъци

Можете да използвате променливи на средата, за да конфигурирате приложението си да събира dump-ове в случай на повреда. Това е полезно, ако искате да разберете причината за повредата. Например, улавянето на dump-ове, когато се хвърли изключение, помага да се идентифицират проблеми чрез проверка на състоянието на приложението, ако се провали.

Следващата таблица показва променливите на средата, които можете да използвате, за да конфигурирате приложението си да събира dump-ове в случай на повреда.

Променлива на околната среда
илюстрирам
По подразбиране
COMPlus_DbgEnableMiniDump или DOTNET_DbgEnableMiniDumpАко е настроено на 1, активирай генерирането на ядрен дамп.0
COMPlus_DbgMiniDumpType или DOTNET_DbgMiniDumpTypeТипът сметище, което трябва да се събира. Вижте таблицата по-долу за подробности2 (MiniDumpWithPrivateReadWriteMemory)
COMPlus_DbgMiniDumpName или DOTNET_DbgMiniDumpNameЗапиши пътя на файла към dump-а. Уверете се, че потребителят, който изпълнява dotnet процеса, има достъп до зададената директория./tmp/coredump.<pid>
COMPlus_CreateDumpDiagnostics или DOTNET_CreateDumpDiagnosticsАко е настроено на 1, активирайте логването на диагностика за процеса на dump.0
COMPlus_EnableCrashReport или DOTNET_EnableCrashReport(Изисква .NET 6 или по-нова версия) Ако е зададено на 1, runtime генерира JSON-форматиран доклад за неуспех, който включва информация за нишките и стековите кадри на неуспешното приложение. Името на доклада за срива е пътят/името на dump, добавено към .crashreport.json.
COMPlus_CreateDumpVerboseDiagnostics или DOTNET_CreateDumpVerboseDiagnostics(Изисква .NET 7 или по-нова версия) Ако е настроено на 1, активирайте детайлното диагностично логване за процеса на dump.0
COMPlus_CreateDumpLogToFile или DOTNET_CreateDumpLogToFile(Изисква се .NET 7 или по-нова) Трябва да се записва пътят към диагностичното съобщение. Ако не е зададено, се записва диагностично съобщение на конзолата на неуспешното приложение.

За тези променливи на околната среда .NET 7 стандартизира префикса DOTNET_ вместо COMPlus_. Въпреки това, префиксът COMPlus_ ще продължи да работи правилно. Ако сиВ по-ранните версии на .NET runtime променливите на околната среда все още трябва да използват префикса 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
[създадена съдия] Писане на минидамп с heap към файл C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp
[създадена съдия] Dump успешно написан



Виждате, че след като програмата се срине необичайно, тя е успешно в посочената от нас директорияФайлът за dump .dmp се генерираЩо се отнася до това как да се анализира, това е съвсем друг въпрос.

Универсални настройки на Windows платформата

В Windows докладването на грешки в Windows (WER) може да бъде конфигурирано да генерира дампове при срив на приложение.

Този метод работи за всички програми, не само за . .NET програми, като C++, Go и др.; И и. НЕТЕН. Версия за NET Core

  • Отворен regedit.exe
  • Отворете директорията HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
  • Създайте KEY DumpFolder от тип REG_EXPAND_SZ, за да конфигурирате директорията, в която се съхраняват dump файловете
  • Можеш също да създадеш KEY DumpCount от типа REG_DWORD да конфигурираш общия брой dumps




Разбира се, можете също да ги конфигурирате чрез PowerShell команди:

Според горната конфигурация, ако програмата излезе необичайно, тя ще създаде dump на програмата в директорията %LOCALAPPDATA%\CrashDumps.

Ресурси:

Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.




Предишен:Подробно обяснение на правилата за съхранение на изображения на прикачени файлове в Discuz, изображения на аватари и изображения на албуми
Следващ:Практическа работа: Използвайте BundleTransformer за замяна на System.Web.Optimization
 Хазяин| Публикувано на 2022-11-6 22:44:06 |
Изпратете dump файлове:

След стартиране на програмата, определете дали директорията има генериран dump файл, ако да, изпратете файла към посочения интерфейс и след това изтрийте файла.
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com