Referens för Kernel Live Dump Code

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

  1. Öppna en PowerShell-prompt med administratörsbehörighet.

  2. 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
  1. 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
  1. Utdata anger att den begärda informationen genereras.
Gathering storage subsystem diagnostic information                                                                         
Running                                                                                                                 
[oooooooooooo                                                                                              ] 
  1. 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
  1. 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.

Kod Namn
0x000000AB SESSION_HAS_VALID_POOL_ON_EXIT
0x00000117 VIDEO_TDR_TIMEOUT_DETECTED
0x00000141 VIDEO_ENGINE_TIMEOUT_DETECTED
0x00000142 VIDEO_TDR_APPLICATION_BLOCKED
0x00000156 WINSOCK_DETECTED_HUNG_CLOSESOCKET_LIVEDUMP
0x0000015C PDC_WATCHDOG_TIMEOUT_LIVEDUMP
0x0000015D SOC_SUBSYSTEM_FAILURE_LIVEDUMP
0x0000015E BUGCODE_NDIS_DRIVER_LIVE_DUMP
0x0000015F CONNECTED_STANDBY_WATCHDOG_TIMEOUT_LIVEDUMP
0x00000161 LIVE_SYSTEM_DUMP
0x00000165 CLUSTER_CSV_STATUS_IO_TIMEOUT_LIVEDUMP
0x00000166 CLUSTER_RESOURCE_CALL_TIMEOUT_LIVEDUMP
0x00000167 CLUSTER_CSV_SNAPSHOT_DEVICE_INFO_TIMEOUT_LIVEDUMP
0x00000168 CLUSTER_CSV_STATE_TRANSITION_TIMEOUT_LIVEDUMP
0x00000169 CLUSTER_CSV_VOLUME_ARRIVAL_LIVEDUMP
0x0000016A CLUSTER_CSV_VOLUME_REMOVAL_LIVEDUMP
0x0000016B CLUSTER_CSV_CLUSTER_WATCHDOG_LIVEDUMP
0x0000016F CLUSTER_CSV_STATE_TRANSITION_INTERVAL_TIMEOUT_LIVEDUMP
0x00000175 TIDIGARE_DÖDLIG_ABNORM_OMSTARTSFEL
0x00000179 CLUSTER_CLUSPORT_STATUS_IO_TIMEOUT_LIVEDUMP
0x0000017C PDC_LOCK_WATCHDOG_LIVEDUMP
0x0000017D PDC_UNEXPECTED_REVOCATION_LIVEDUMP
0x00000187 VIDEO_DWMINIT_TIMEOUT_FALLBACK_BDD
0x00000188 CLUSTER_CSVFS_LIVEDUMP
0x00000190 WIN32K_CRITICAL_FAILURE_LIVEDUMP
0x00000193 VIDEO_DXGKRNL_LIVEDUMP
0x00000195 SMB_SERVER_LIVEDUMP
0x00000198 UFX_LIVEDUMP
0x0000019D CLUSTER_SVHDX_LIVEDUMP
0x000001A1 WIN32K_CALLOUT_WATCHDOG_LIVEDUMP
0x000001A3 CALL_HAS_NOT_RETURNED_WATCHDOG_TIMEOUT_LIVEDUMP
0x000001A4 DRIPS_SW_HW_DIVERGENCE_LIVEDUMP
0x000001A5 USB_DRIPS_BLOCKER_SURPRISE_REMOVAL_LIVEDUMP
0x000001A6 BLUETOOTH_ERROR_RECOVERY_LIVEDUMP
0x000001A7 SMB_REDIRECTOR_LIVEDUMP
0x000001A8 VIDEO_DXGKRNL_BLACK_SCREEN_LIVEDUMP
0x000001A9 DIRECTED_FX_TRANSITION_LIVEDUMP
0x000001B0 VIDEO_MINIPORT_FAILED_LIVEDUMP
0x000001B8 VIDEO_MINIPORT_BLACK_SCREEN_LIVEDUMP
0x000001C4 DRIVER_VERIFIER_DETECTED_VIOLATION_LIVEDUMP
0x000001C5 IO_THREADPOOL_DEADLOCK_LIVEDUMP
0x000001C9 USER_MODE_HEALTH_MONITOR_LIVEDUMP
0x000001CC EXRESOURCE_TIMEOUT_LIVEDUMP
0x000001D1 TELEMETRY_ASSERTS_LIVEDUMP
0x000001D4 UCMUCSI_LIVEDUMP
0x000001E1 DEVICE_DIAGNOSTIC_LOG_LIVEDUMP
0x000001F5 APPLICATION_HANG_KERNEL_LIVEDUMP
0x000021C8 MANUALLY_INITIATED_BLACKSCREEN_HOTKEY_LIVE_DUMP

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

Se även

Referens till felsökningskoder

!analysera

Buggkontroller (blå skärmar)

Analysera blåskärmsdata för buggkontroll