Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze sectie bevat beschrijvingen van algemene kernel live dump-codes die kunnen optreden. Livedumps stellen het besturingssysteem niet opnieuw in, maar maken het vastleggen van geheugengegevens mogelijk voor abnormale situaties waarin het besturingssysteem kan doorgaan.
Opmerking
Dit onderwerp is bedoeld voor programmeurs. Als u een klant bent van wie het systeem een blauw scherm met een foutcontrolecode heeft weergegeven, raadpleegt u Problemen met blauw scherm oplossen.
Kernel live-dump vergeleken met bug check
Met een traditionele foutcontrole wordt de pc opnieuw ingesteld en wordt het werk van de gebruiker onderbroken. Het doel van kernel live dump is het verzamelen van gegevens om problemen met een abnormale situatie op te lossen, terwijl het besturingssysteem toestaat om te kunnen blijven functioneren. Dit vermindert de uitvaltijd in vergelijking met een foutencontrole voor 'niet-fatale' maar hoog-impactfouten en vastlopers. Kernel live dumps worden gebruikt wanneer het mogelijk is om het besturingssysteem te herstellen naar een bekende goede toestand. Een hardwareherstel van een subsysteem, zoals video/beeldscherm, USB3 of Wi-Fi kan bijvoorbeeld toestaan dat deze systemen terugkeren naar een bekende goede status, met minimale gevolgen voor de gebruiker.
Een kernel livedump maakt een consistente momentopname van kernelgeheugen en slaat dit op in een dumpbestand voor de toekomstige analyse. Om de impact op de prestaties te minimaliseren, worden geheugenkopietechnieken gebruikt om het dumpbestand in een korte periode te maken. Bovendien wordt de verzameling livedumps beperkt, zodat de impact op de gebruiker wordt geminimaliseerd.
Een kernel live dump is effectief voor een categorie problemen waarbij iets lang duurt, maar er technisch gezien niets foutgaat. Een watchdogtimer kan worden geïnitialiseerd wanneer een bewerking wordt gestart. Als de watchdog verloopt voordat de bewerking binnen de verwachte tijd is voltooid, kan een live dump van het systeem gemaakt worden. Vervolgens kan de dump worden geanalyseerd door de callstack en de gerelateerde wachtketen voor die bewerking te doorlopen om te onderzoeken waarom deze niet binnen het verwachte tijdsframe wordt voltooid.
Systeemlogboeken werken goed wanneer er iets mislukt en de code-eigenaar de oorzaak van de fout heeft vastgelegd en de oorzaak kan identificeren. Livedumps die gebruikmaken van watchdog-timers proberen foutpaden te vangen die niet zijn verwacht en geregistreerd. Maar net als bij elke fout kunnen de systeemlogboeken andere problemen identificeren die aanwijzingen kunnen geven voor de specifieke hoofdoorzaak van de fout.
Inhoud van kernel livedumpbestand
Net als bij normale dumpbestanden kunnen livedumpbestanden minidumps bevatten (met secundaire gegevens) en volledige kerneldumps, die mogelijk ook geheugen van de gebruikersmodus bevatten, vergelijkbaar met actieve dumps. Zie Variëteiten van Kernel-Mode Dump-bestanden voor algemene informatie over de inhoud van het dumpbestand. Sommige livedumps proberen alleen minidumps vast te leggen, omdat ze zijn ontworpen om specifieke hardwaregerelateerde gegevens vast te leggen, terwijl anderen kunnen proberen een grotere kernel livedump vast te leggen.
Voor prestaties, bestandsgrootte en betrouwbaarheid van dump-opnamen wordt sommige informatie niet opgenomen, zoals pagina's uit de stand-bijlijst en bestandscaches.
Livedumpbestanden bevatten doorgaans geheugenpagina's zoals:
- KdDebuggerBlock
- Lijst met geladen modules
Voor elke processor worden de volgende gegevens vastgelegd in kerneldumps:
- KiProcessorBlock
- PRCB's
- Huidige stack
- Huidige paginamaptabel
- KI_USER_SHARED_DATA
- NTOS-kernelinstallatiekopieën
- HAL-afbeelding
Aanvullende informatie in kerneldumps kan het volgende omvatten:
- Thread- en geheugenstatus
- Logboekregistratie in het geheugen
Sommige live dumps kunnen gebruikersmodus-procespagina's bevatten.
Aanvullende domeinspecifieke gegevens, zoals USB-specifieke gegevens bij USB-storingen, kunnen in sommige live-dumps worden opgenomen.
Gedeeltelijk kernel-live-dumpbestand
Er kan een gedeeltelijk kernel-livedumpbestand worden gegenereerd in situaties waarin livedump niet op betrouwbare wijze alle beoogde geheugenpagina's kan vastleggen. De informatie die wordt vastgelegd in een gedeeltelijke dump, wordt gefilterd en geprioriteerd door pagina's vast te leggen die belangrijke gegevens bevatten die nodig zijn om een geldige dump te genereren vóór andere pagina's. De kernelpagina's krijgen bijvoorbeeld prioriteit boven gebruikerspagina's wanneer de livedump gebruikerspagina's bevat. In sommige situaties zijn er onvoldoende resources beschikbaar om alle beoogde optionele geheugenpagina's vast te leggen, zodat het geheugen mogelijk ontbreekt in het dumpbestand. Het dumpbestand moet nog steeds worden herkend door het WinDbg-foutopsporingsprogramma, maar kan fouten weergeven bij het dumpen van geheugen. Als in het foutopsporingsprogramma een fout wordt weergegeven bij het dumpen van geheugen op een adres, kunt u de extensie !pte gebruiken om te controleren of de PTE voor een adres geldig is of niet. Dit kan helpen om te bepalen of het geheugenadres echt ongeldig is of als de pagina geldig is, maar alleen niet beschikbaar is in het dumpbestand.
Livedumpbestanden analyseren
Wanneer er een livedump optreedt, kan het dumpbestand worden geanalyseerd met behulp van dezelfde technieken die worden gebruikt voor andere geheugendumpbestanden. Om inzicht te hebben in de inhoud van het geheugen tijdens een fout, is kennis van processorgeheugenregisters en assemblyprogrammering vereist.
Voor meer informatie, zie:
WinDbg gebruiken om informatie over stopcodes van live dump weer te geven
Als een specifieke livedumpcode niet wordt weergegeven in dit onderwerp, gebruikt u de extensie !analyze in het Windows Debugger (WinDbg) met de volgende syntaxis (in kernelmodus), waarbij u vervangt <code> door een livedumpcode:
!analyze -show <code>
Als u deze opdracht invoert, geeft WinDbg informatie weer over de opgegeven livedumpcode. Als uw standaardnummerbasis (radix) niet 16 is, moet u het voorvoegsel <code>0x gebruiken.
Geef de parameters voor live dump code op voor de opdracht !analyze om eventuele beschikbare parameterinformatie weer te geven. Als u bijvoorbeeld informatie wilt weergeven over bugcontrole 0x144 BUGCODE_USB3_DRIVER, met een parameter 1-waarde van 0x3003, gebruikt u !analyze -show 0x144 0x3003 zoals hier weergegeven.
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
Om WinDbg te downloaden, zie Hulpprogramma's voor foutopsporing voor Windows. Zie Aan de slag met Windows-foutopsporing voor meer informatie over de WinDbg-ontwikkelhulpprogramma's.
Locaties van live-dumpbestanden
De live-kerneldumps worden standaard opgeslagen in de map 'C:\WINDOWS\LiveKernelReports'.
Volledige dumps: %systemroot%\LiveKernelReports\*.dmp
Minidumps: %systemroot%\LiveKernelReports\<ComponentName>\*.dmp
Een mapstructuur wordt gebruikt voor het opslaan van live dumps voor verschillende onderdelen.
NDIS
PDCRevocation
PoW32kWatchdog
USBHUB3
WATCHDOG
Registersleutels voor live-dumps
Zie WER-instellingen voor meer informatie over configuratieopties voor door het systeem gegenereerde live kernelrapporten.
PowerShell gebruiken om handmatig een livedump te activeren
Open een beheerders PowerShell-promptvenster.
Haal de vriendelijke naam van het StorageSubsystem op met de PowerShell-opdracht Get-StorageSubSystem.
C:\> Get-StorageSubSystem
FriendlyName HealthStatus OperationalStatus
------------ ------------ -----------------
Windows Storage on 10-2411-PC Healthy OK
- Gebruik Get-StorageDiagnosticInfo om een livedump te genereren voor het bovenstaande subsysteem (samen met andere diagnostische logboeken). Zie Get-StorageDiagnosticInfo voor meer informatie.
C:\> Get-StorageDiagnosticInfo -StorageSubSystemFriendlyName "Windows Storage on 10-2411-PC" -IncludeLiveDump -DestinationPath C:\destinationfolder
- De uitvoer geeft aan dat de aangevraagde informatie wordt gegenereerd.
Gathering storage subsystem diagnostic information
Running
[oooooooooooo ]
- De dump zal binnen
[DestinationPath]\localhostzijn.
C:\> dir C:\destinationfolder\localhost\*.dmp
Directory: C:\destinationfolder\localhost
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 5/5/2016 1:08 PM 867135488 LiveDump.dmp
- Als u het foutopsporingsprogramma gebruikt om !analyze uit te voeren op het dumpbestand, wordt aangegeven dat dit een livedumpcode van LIVE_SYSTEM_DUMP (161) is.
Kernel live dump codes
De volgende tabel bevat koppelingen naar live dumps-codes voor kernels.
Deze stopcodes kunnen worden gebruikt voor live-dumps of om een bugcontrole van het apparaat uit te voeren.
| Code | Naam |
|---|---|
| 0x00000124 | WHEA_UNCORRECTABLE_ERROR |
| 0x00000144 | BUGCODE_USB3_DRIVER |
| 0x00000164 | WIN32K_CRITICAL_FAILURE |
Zie ook
Bug Check Code Reference (Overzicht van bugcontrolecodes)