Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här avsnittet innehåller beskrivningar av vanliga kernel-livedumpkoder som kan inträffa. Livedumpar återställer inte operativsystemet, men tillåter insamling av minnesinformation för onormala situationer där operativsystemet kan fortsätta.
Anmärkning
Det här ämnet är till för programmerare. Om du är en kund vars system har visat en blå skärm med en felkontrollkod, se Felsöka blåskärmsfel.
Kernel live dump jämfört med buggkontroll
Med en traditionell buggkontroll återställs datorn och användarens arbete avbryts. Målet med kernel live dump är att samla in data för att felsöka en onormal situation, men tillåta att operativsystemet fortsätter att fungera. Detta minskar stilleståndstiden jämfört med felsökning av "icke-dödliga" men högpåverkande fel och frysningar. Kernel live-dumpar används när det är möjligt att återställa operativsystemet till ett känt gott tillstånd. Till exempel kan en maskinvaruåterställning av ett undersystem, till exempel video/bildskärm, USB3 eller Wi-Fi göra det möjligt för dessa system att återgå till ett känt bra tillstånd, med minimal användarpåverkan.
En kernel-livedump skapar en konsekvent ögonblicksbild av kernelminnet och sparar den i en dumpfil för framtida analys. För att minimera prestandapåverkan används tekniker för minneskopiering för att skapa dumpfilen på kort tid. Dessutom begränsas insamlingen av livedumpar så att användarpåverkan minimeras.
En kernel-livedump är effektiv för en kategori av problem där något tar lång tid, och ändå misslyckas ingenting tekniskt. En timer för vakthund kan initieras när en åtgärd startas. Om vakthunden löper ut innan operationen slutförs inom den förväntade tiden kan en live dump av systemet tas. Sedan kan dumpen analyseras genom att gå igenom anropsstacken och den relaterade väntekedjan för att undersöka varför den inte slutförs inom den förväntade tidsramen.
Systemloggar fungerar bra när något misslyckas och kodägaren har registrerat orsaken till felet och kan identifiera orsaken. Livedumpar som använder watchdog-timrar försöker upptäcka felvägar som inte förväntades och loggades. Men precis som vid varje fel kan systemloggarna identifiera andra problem som kan ge ledtrådar till den specifika rotorsaken till felet.
Innehåll i kernel-livedumpfil
På samma sätt som vanliga dumpfiler kan realtidsdumpfiler innehålla minidumpar (med sekundära data) och fullständiga kerneldumpar, som också kan innehålla minne i användarläge, liknande aktiva dumpar. Allmän information om dumpfilinnehåll finns i Sorter av Kernel-Mode Dump Files. Vissa livedumpar försöker bara samla in minidumpar eftersom de är utformade för att samla in specifika maskinvarurelaterade data, medan andra kan försöka samla in en större kernel-livedump.
För att förbättra prestandan, minska filstorleken och öka tillförlitligheten hos dumpinsamlingar, ingår inte viss information. Detta omfattar bland annat sidor från väntelistan och filcacheminnen.
Direktdumpfiler innehåller vanligtvis minnessidor som:
- KdDebuggerBlock
- Lista över inlästa moduler
För varje processor samlas följande information in i kerneldumpar:
- KiProcessorBlock
- PRCBs
- Aktuell stacknivå
- Katalogtabell för aktuell sida
- KI_USER_SHARED_DATA
- NTOS-kernelavbildning
- HAL-avbildning
Den ytterligare informationen i kerneldumpar kan vara:
- Tråd-/minnestillstånd
- Loggning i minnet
Vissa livedumps kan innehålla processsidor i användarläge.
Ytterligare domänspecifika data, till exempel USB-specifika data för USB-fel, kan inkluderas för vissa livedumpar.
Partiell kernel-livedumpfil
En partiell kernel-direktdumpningsfil kan genereras i situationer där livedump inte på ett tillförlitligt sätt kan samla in alla avsedda minnessidor. Informationen som samlas in i en partiell dump filtreras och prioriteras genom att samla in sidor som innehåller viktiga data som krävs för att generera en giltig dump före andra sidor. Till exempel prioriteras kernelsidorna över användarsidor när den aktiva dumpen innehåller användarsidor. I vissa situationer finns det inte tillräckligt med resurser för att samla in alla avsedda valfria minnessidor, så minnet kanske saknas i dumpfilen. Dumpfilen bör fortfarande kännas igen av WinDbg-felsökningsprogrammet, men kan visa fel vid försök att dumpa minne. Om felsökningsprogrammet visar ett fel när du försöker dumpa minne på en adress kan du använda !pte-tillägget för att kontrollera om PTE för en adress är giltig eller inte. Detta kan hjälpa dig att avgöra om minnesadressen verkligen är ogiltig eller om sidan är giltig men bara inte tillgänglig i dumpfilen.
Analysera direktdumpfiler
När en live minnesdump inträffar kan dumpfilen analyseras med samma tekniker som används för andra minnesdumpar. För att förstå innehållet i minnet under ett fel krävs kunskaper om processorminnesregister och sammansättningsprogrammering.
Mer information finns i:
Använda WinDbg för att visa information om stoppkod för livedump
Om en specifik livedumpkod inte visas i det här avsnittet använder du tillägget !analyze i Windows-felsökningsprogrammet (WinDbg) med följande syntax (i kernelläge) och ersätter <code> med en livedumpkod:
!analyze -show <code>
Om du anger det här kommandot visas information om den angivna live dump-koden i WinDbg. Om standardnummerbasen (radix) inte är 16, prefix <code> med 0x.
Ange livedumpkodens parametrar till kommandot !analyze för att visa tillgänglig parameterinformation. Om du till exempel vill visa information om felkontroll 0x144 BUGCODE_USB3_DRIVER, med parameter 1-värdet 0x3003, använder du !analyze -show 0x144 0x3003 som visas här.
0: kd> !analyze -show 0x144 0x3003
BUGCODE_USB3_DRIVER (144)
This bugcheck usually happens when the USB3 core stack detects an invalid
operation being performed by a USB client. This bugcheck may also occur
due to hardware failure on a USB Boot Device.
Arguments:
Arg1: 0000000000003003, USB3_WER_BUGCODE_USBHUB3_DEVICE_ENUMERATION_FAILURE
A USB device failed enumeration.
Arg2: 0000000000000000, USBHUB3_LIVEDUMP_CONTEXT
Arg3: 0000000000000000, 0
Arg4: 0000000000000000, 0
Information om hur du laddar ned WinDbg finns i Felsökningsverktyg för Windows. Mer information om WinDbg-utvecklingsverktygen finns i Komma igång med Windows-felsökning.
Platser för livedumpfiler
De aktiva dumparna lagras som standard i katalogen C:\WINDOWS\LiveKernelReports.
Fullständiga dumpar: %systemroot%\LiveKernelReports\*.dmp
Minidumps: %systemroot%\LiveKernelReports\<ComponentName>\*.dmp
En katalogstruktur används för att lagra livedumpar för olika komponenter.
NDIS
PDCRevocation
PoW32kWatchdog
USBHUB3
WATCHDOG
Direktdumpa registernycklar
Mer information om konfigurationsalternativ för systemgenererade live kernel-rapporter finns i WER-inställningar.
Använda PowerShell för att manuellt utlösa en direktdumpning
Öppna en PowerShell-prompt med administratörsbehörighet.
Hämta det vänliga namnet på StorageSubsystem med hjälp av PowerShell-kommandot Get-StorageSubSystem.
C:\> Get-StorageSubSystem
FriendlyName HealthStatus OperationalStatus
------------ ------------ -----------------
Windows Storage on 10-2411-PC Healthy OK
- Använd Get-StorageDiagnosticInfo för att generera en live-dump för undersystemet ovan samt andra diagnostikloggar. Mer information finns i Get-StorageDiagnosticInfo.
C:\> Get-StorageDiagnosticInfo -StorageSubSystemFriendlyName "Windows Storage on 10-2411-PC" -IncludeLiveDump -DestinationPath C:\destinationfolder
- Utdata anger att den begärda informationen genereras.
Gathering storage subsystem diagnostic information
Running
[oooooooooooo ]
- Dumpen kommer att finnas i
[DestinationPath]\localhost.
C:\> dir C:\destinationfolder\localhost\*.dmp
Directory: C:\destinationfolder\localhost
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 5/5/2016 1:08 PM 867135488 LiveDump.dmp
- Om du använder felsökningsprogrammet för att köra !analyze på dumpfilen anger det att det här är en livedumpkod för LIVE_SYSTEM_DUMP (161).
Kernel live dump-koder
Följande tabell innehåller länkar till kernel live dumps-koder.
Dessa stoppkoder kan användas för livedumpar eller för att felkontrollera enheten.
| Kod | Namn |
|---|---|
| 0x00000124 | WHEA_UNCORRECTABLE_ERROR |
| 0x00000144 | BUGCODE_USB3_DRIVER |
| 0x00000164 | WIN32K_CRITICAL_FAILURE |