Wskazówki dotyczące rozwiązywania problemów dotyczących awarii aplikacji lub usługi
Ten artykuł zawiera wskazówki dotyczące rozwiązywania problemów z zachowaniem awarii aplikacji lub usługi.
Dotyczy: wszystkie obsługiwane wersje systemu Windows Server i klienta systemu Windows
Gdy w dzienniku aplikacji jest wyświetlany identyfikator zdarzenia 1001 i identyfikator zdarzenia 1000, oznacza to zachowanie aplikacji powodujące awarię. Odbywa się to razem z procesami pierwszej lub innej firmy i wskazuje możliwy moduł błędów.
W tym artykule szczegółowo opisano proces sprawdzania zdarzenia, zrozumienia informacji w zdarzeniu i obsługi zdarzenia na podstawie tego, czy jest to aplikacja innej firmy. Narzędzia debugowania dla systemu Windows są używane w tym procesie.
Zanim rozpoczniesz
Zagadnienia do rozważenia:
- Sprawdź, czy używasz najnowszych aktualizacji zainstalowanej wersji systemu operacyjnego.
- Sprawdź, czy aplikacja, której dotyczy ten wpływ, jest aktualna.
- Jeśli oprogramowanie antywirusowe jest zainstalowane, sprawdź, czy jest ono uruchomione w najnowszej wersji i czy istnieją niezbędne wykluczenia.
Informacje o identyfikatorze zdarzenia 1001 level
pokazują, czy Raportowanie błędów systemu Windows (WER) jest włączona w systemie. Należy jednak zmienić tę usługę, aby zebrać level
informacje wymagane do zbadania. System domyślnie nie rejestruje tych informacji, aby uniknąć niewielkiego obciążenia związanego z wydajnością.
Identyfikator zdarzenia 1000 z Error
poziomem to rzeczywiste zdarzenie powodujące awarię aplikacji. Na przykład przedstawiono następujące informacje:
Log Name: Application
Source: Application Error
Date: <Date Time>
Event ID: 1000
Task Category: Application Crashing Events
Level: Error
Keywords:
User: SYSTEM
Computer: demo.contoso.com
Description:
Faulting application name: netsh.exe, version: 10.0.22621.1, time stamp: 0x13af0815
Faulting module name: netsh.exe, version: 10.0.22621.1, time stamp: 0x13af0815
Exception code: 0xc0000005
Fault offset: 0x0000000000005399
Faulting process id: 0x0xFEE4
Faulting application start time: 0x0x1DAB66BB5BE07D4
Faulting application path: C:\WINDOWS\system32\netsh.exe
Faulting module path: C:\WINDOWS\system32\netsh.exe
Report Id: <Report ID>
Faulting package full name:
Faulting package-relative application ID:
Często przedstawia moduł firmy Microsoft jako moduł błędów, na przykład ntdll.dll, kernel32.dll i kernelbase.dll. Te moduły są intensywnie używane podczas uruchamiania procesów i przechodzenia między trybem użytkownika a trybem jądra. W tym procesie są one przechwytywane jako ofiary innych typów uszkodzeń wcześniej wykonywanych przez nieprawidłowo działające moduły.
Typowe wyjątki:
0xc0000022
STATUS_ACCESS_DENIED
0xc0000005
STATUS_ACCESS_VIOLATION
0xc0000374
STATUS_HEAP_CORRUPTION
W przypadku wystąpienia wyjątku można włączyć dodatkowe pełne rejestrowanie dla procesu i zebrać pełny zrzut procesu przy użyciu Raportowanie błędów systemu Windows (WER) i GFlags (gflags.exe).
Zainstaluj narzędzia debugowania dla systemu Windows, aby uzyskać gflags.exe, ponieważ są dostępne w narzędziach. Jednak wystarczy skopiować plik bez instalowania narzędzi na maszynie, która wymaga rozwiązywania problemów.
Zebrać dane
W poprzednim przykładzie awarii netsh.exe skonfiguruj maszynę do zbierania zrzutów, aby uzyskać więcej informacji na temat przyczyn awarii. Zastąp netsh.exe plikiem wykonywalnym zidentyfikowanym w identyfikatorze zdarzenia 1000 na urządzeniu.
Skonfiguruj usługę WER, aby zbierać pełne zrzuty procesów wyjątku, uruchamiając następujące polecenia z wiersza polecenia z podwyższonym poziomem uprawnień:
reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe"/v DumpFolder /t REG_EXPAND_SZ /d "C:\WER" /f md C:\WER reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpCount /t REG_DWORD /d 10 /f reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpType /t REG_DWORD /d 2 /f reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpFolder /t REG_EXPAND_SZ /d "C:\WER" /f reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpCount /t REG_DWORD /d 10 /f reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpType /t REG_DWORD /d 2 /f
Te polecenia umożliwiają zbieranie i przechowywanie w folderze C:\WER maksymalnie 10 pełnych zrzutów procesów netsh.exe.
Uwaga 16.
Dodano lokalizację rejestru systemu Windows w systemie Windows 64 (WOW64), która umożliwia uruchamianie aplikacji 32-bitowych w systemach 64-bitowych.
Skonfiguruj GFlags do monitorowania alokacji sterty w celu śledzenia uszkodzenia.
Przejdź do katalogu, w którym znajduje się narzędzie, i uruchom następujące polecenia z wiersza polecenia z podwyższonym poziomem uprawnień.
Aby włączyć flagę Włącz stertę strony (hpa):
Gflags.exe /i netsh.exe +hpa
Aby wyłączyć flagę sterty strony Włącz:
Gflags.exe /i netsh.exe -hpa
Uruchom ponownie proces, aby ustawienie miało zastosowanie.
Monitoruj folder C:\WER i sprawdź wszystkie utworzone zrzuty.
Analizowanie danych
Po utworzeniu zrzutów procesów można wykonywać następujące czynności:
- Udostępnij odpowiednie zrzuty innej osobie w celu zbadania, jeśli proces jest procesem innej firmy.
- Skontaktuj się z pomoc techniczna firmy Microsoft, aby przeanalizować dane, jeśli proces jest procesem pierwszej firmy.
- Użyj debugera (windbg.exe) zainstalowanego przy użyciu narzędzi debugowania dla systemu Windows i spróbuj określić moduł błędu przy użyciu rozszerzenia !analyze.
Po zebraniu danych i zakończeniu badania usuń klucz rejestru (ten z nazwą procesu) i wyłącz flagę Sterty strony Włącz dla GFlags.