Dela via


Felsökningsvägledning för felsökning av program- eller tjänstkraschbeteende

Den här artikeln innehåller vägledning om hur du felsöker program- eller tjänstkraschbeteenden.

Gäller för: Alla versioner av Windows Server och Windows Client som stöds

När du ser händelse-ID 1001 och händelse-ID 1000 upprepade gånger i programloggen indikerar det ett program som kraschar. Det sker tillsammans med processer från första eller tredje part och pekar på en eventuell felmodul.

Den här artikeln beskriver processen för att kontrollera händelsen, förstå informationen i händelsen och hantera händelsen baserat på om det är ett program från första eller tredje part. Felsökningsverktyg för Windows används i den här processen.

Innan du börjar

Överväganden:

  • Kontrollera att du kör de senaste uppdateringarna för den installerade operativsystemversionen.
  • Kontrollera att det påverkade programmet är uppdaterat.
  • Om antivirusprogram har installerats kontrollerar du att det körs på den senaste versionen och att nödvändiga undantag finns på plats.

Händelse-ID 1001-informationen level visar om Windows Felrapportering (WER) är aktiverat i systemet. Du måste dock ändra den här tjänsten för att samla in den level information som krävs för undersökningen. Systemet loggar inte den här informationen som standard för att undvika mindre prestandakostnader.

Händelse-ID 1000 med Error nivån är den faktiska programkraschhändelsen. Den visar följande information som ett exempel:

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:

Ofta visas en Microsoft-modul som felmodul, till exempel ntdll.dll, kernel32.dll och kernelbase.dll. De här modulerna används mycket medan processer körs och övergår mellan användarläge och kernelläge. I processen fångas de som offer för andra typer av skador som tidigare utförts av felaktiga moduler.

Vanliga undantag:

  • 0xc0000022

    STATUS_ACCESS_DENIED

  • 0xc0000005

    STATUS_ACCESS_VIOLATION

  • 0xc0000374

    STATUS_HEAP_CORRUPTION

När ett undantag inträffar kan du aktivera ytterligare utförlig loggning för processen och samla in en fullständig processdump med hjälp av Windows Felrapportering (WER) och GFlags (gflags.exe).

Installera felsökningsverktygen för Windows för att få gflags.exe, eftersom det ingår i verktygen. Du behöver dock bara kopiera filen utan att installera verktygen på datorn som behöver felsökas.

Samla in data

I föregående exempel på en netsh.exe krasch konfigurerar du datorn för att samla in dumpar för mer information om vad som orsakade kraschen. Ersätt netsh.exe med den körbara fil som identifieras i Händelse-ID 1000 på enheten.

  1. Konfigurera WER för att samla in fullständiga processdumpar av undantaget genom att köra följande kommandon från en upphöjd kommandotolk:

    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
    

    Med de här kommandona kan upp till 10 fullständiga processdumpar av netsh.exe processen samlas in och lagras i mappen C:\WER.

    Kommentar

    Registerplatsen Windows på Windows 64 (WOW64) läggs till, vilket gör att 32-bitarsprogram kan köras på 64-bitarssystem.

  2. Konfigurera GFlags för att övervaka heap-allokeringar för att spåra korruptionen.

    Navigera till katalogen där verktyget finns och kör följande kommandon från en upphöjd kommandotolk.

    Så här aktiverar du flaggan Aktivera sidhög (hpa):

    Gflags.exe /i netsh.exe +hpa
    

    Så här inaktiverar du flaggan Aktivera sidhög :

    Gflags.exe /i netsh.exe -hpa
    

    Starta om processen för att inställningen ska börja gälla.

  3. Övervaka mappen C:\WER och sök efter eventuella skapade dumpar.

Analysera data

När du har processdumpar kan du:

  • Dela relevanta dumpar med tredje part för undersökning om processen är en process från tredje part.
  • Kontakta Microsoft Support för att analysera data om processen är en process från första part.
  • Använd felsökningsprogrammet (windbg.exe) installerat med felsökningsverktyg för Windows och försök att fastställa felmodulen med hjälp av tillägget !analyze.

När du har samlat in data och slutfört undersökningen tar du bort registernyckeln (den med processnamnet) och inaktiverar flaggan Aktivera sidhög för GFlags.