Udostępnij za pośrednictwem


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.

  1. 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.

  2. 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.

  3. 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.