Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 5902|Odpowiedź: 1

[.NET Core] [Rzeczywista walka]. Awarie aplikacji NET/C# i wyjątki automatycznie generują pliki zrzutu DMP

[Skopiuj link]
Opublikowano 2022-11-6 22:41:42 | | | |
Wymagania: Podczas tworzenia aplikacji z użyciem .NET/C# żaden programista nie jest w stanie zapewnić stabilnego i solidnego wykonania programu, co może być związane z logiką kodu programisty lub środowiskiem użytkownikaNie ma 100% gwarancji, że aplikacja, którą tworzysz, będzie bezproblemowaNie jest źle mieć problem, ale najgorsze jest to, że istnieje problem, który nie potrafi znaleźć przyczyny i rozwiązać problemu.

Jeśli aplikacja nie zostanie wykonana zgodnie z oczekiwaniami i wystąpi nieprawidłowe wyjście, jak można automatycznie wygenerować plik zrzutu DMP, aby rozwiązać problem?
Zrzut to plik zawierający migawkę procesu w momencie jego utworzenia i może być używany do sprawdzania stanu aplikacji. Gdy trudno jest dołączyć debugger do aplikacji .NET, takiej jak środowisko produkcyjne lub CI, możesz użyć zrzutów do debugowania aplikacji. Użycie zrzutów rejestruje stan problematycznych procesów, a stan ten można sprawdzić bezpośrednio bez zatrzymywania aplikacji.

Zbieraj wyrzuty

Możesz użyć zmiennych środowiskowych do skonfigurowania aplikacji do zbierania zrzutów w przypadku awarii. To pomocne, jeśli chcesz poznać przyczynę awarii. Na przykład przechwytywanie zrzutów po wyrzuceniu wyjątku pomaga zidentyfikować problemy, sprawdzając stan aplikacji, jeśli się nie uda.

Poniższa tabela pokazuje zmienne środowiskowe, których możesz użyć do skonfigurowania aplikacji do zbierania zrzutów w przypadku awarii.

zmienna środowiskowa
Ilustrują
Domyślny
COMPlus_DbgEnableMiniDump czy DOTNET_DbgEnableMiniDumpJeśli ustawisz 1, włącz generowanie zrzutu rdzeni.0
COMPlus_DbgMiniDumpType czy DOTNET_DbgMiniDumpTypeTaki rodzaj wysypiska do zbierania. Zobacz poniższą tabelę dla szczegółów2 (MiniZPrywatnąZapisPamięciąCzytaniaZapisu)
COMPlus_DbgMiniDumpName czy DOTNET_DbgMiniDumpNameZapisz ścieżkę pliku do zrzutu. Upewnij się, że użytkownik prowadzący proces dotnet ma dostęp do określonego katalogu./tmp/coredump.<pid>
COMPlus_CreateDumpDiagnostics czy DOTNET_CreateDumpDiagnosticsJeśli ustawiono 1, włącz logowanie diagnostyczne dla procesu zrzutu.0
COMPlus_EnableCrashReport czy DOTNET_EnableCrashReport(Wymaga .NET 6 lub nowszych) Jeśli ustawione na 1, runtime generuje raport o awarii w formacie JSON, który zawiera informacje o wątkach i ramkach stosu uszkodzonej aplikacji. Nazwa raportu crash to ścieżka/nazwa zrzutu przypisana do .crashreport.json.
COMPlus_CreateDumpVerboseDiagnostics czy DOTNET_CreateDumpVerboseDiagnostics(Wymaga .NET 7 lub nowszego) Jeśli ustawiono na 1, włącz szczegółowe logowanie diagnostyczne dla procesu zrzutu.0
COMPlus_CreateDumpLogToFile czy DOTNET_CreateDumpLogToFile(wymagany .NET 7 lub nowszy) Ścieżka pliku do wiadomości diagnostycznej powinna być zapisana. Jeśli nie jest ustawiony, do konsoli nieudanej aplikacji zapisywany jest komunikat diagnostyczny.

Dla tych zmiennych środowiskowych .NET 7 standaryzuje prefiks DOTNET_ zamiast COMPlus_. Jednak prefiks COMPlus_ będzie nadal działać poprawnie. Jeśli jesteśWe wcześniejszych wersjach środowiska .NET zmienne środowiskowe powinny nadal używać prefiksu COMPlus_



Stwórz nowy test aplikacji .NET Core 6

Użyj VS 2022, aby przetestować nowy test aplikacji .NET Core 6 z następującym kodem:

Uruchom program za pomocą polecenia cmd, jak pokazano na poniższym obrazku:

COMPlus_EnableCrashReport=1
COMPlus_DbgEnableMiniDump=1
COMPlus_DbgMiniDumpName="C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp"
COMPlus_CreateDumpDiagnostics=1
Wyjątek nieobsługiwany. System.Wyjątek: itsvse.com
   w Programie. <Main>$(String[] args) w C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:linia 9
[createdump] Zapisywanie minidumpu z kopicą do pliku C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp
[createdump] Dump pomyślnie napisany



Widać, że po nieprawidłowym zawieszeniu programu jest on pomyślnie umieszczony w katalogu, który wskazaliśmyPlik zrzutu .dmp jest generowanyJeśli chodzi o sposób analizy, to inna sprawa.

Uniwersalne Ustawienia Windows Platform

W systemie Windows raportowanie błędów Windows (WER) może być skonfigurowane do generowania zrzutów podczas awarii aplikacji.

Ta metoda działa dla wszystkich programów, nie tylko dla . programy .NET, takie jak C++, Go itp.; I i. SIEĆ. Wersja NET Core

  • Otwórz regedit.exe
  • Otwórz katalog HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
  • Utwórz folder KEY DumpFolder typu REG_EXPAND_SZ, aby skonfigurować katalog, w którym przechowywane są pliki zrzutu
  • Możesz też utworzyć KEY DumpCount typu REG_DWORD skonfigurować całkowitą liczbę zrzutów




Oczywiście możesz też skonfigurować je za pomocą poleceń PowerShell:

Zgodnie z powyższą konfiguracją, jeśli program wyłączy się nieprawidłowo, utworzy zrzut programu w katalogu %LOCALAPPDATA%\CrashDumps.

Zasoby:

Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.




Poprzedni:Szczegółowe wyjaśnienie zasad przechowywania obrazów załączników Discuz, zdjęć awatarów i albumów
Następny:Praktyczne działanie: Użyj BundleTransformer do zastąpienia System.Web.Optimization
 Ziemianin| Opublikowano 2022-11-6 22:44:06 |
Wyślij pliki zrzutu:

Po uruchomieniu programu sprawdź, czy katalog zawiera wygenerowany plik zrzutu, jeśli tak, złóż plik do określonego interfejsu, a następnie usuń plik.
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com