Code-Referenz für Kernel-Live-Dump
Dieser Abschnitt enthält Beschreibungen allgemeiner Kernel-Liveabbildcodes, die auftreten können. Live Dumps setzen das Betriebssystem nicht zurück, ermöglichen jedoch die Erfassung von Speicherinformationen für ungewöhnliche Situationen, in denen das Betriebssystem fortgesetzt werden kann.
Hinweis
Dieses Thema ist für Entwickler*innen gedacht. Wenn Sie ein Kunde sind, dessen System einen Bluescreen mit einem Fehlerüberprüfungscode angezeigt hat, lesen Sie die Problembehandlung bei Bluescreen-Fehlern.
Kernel-Liveabbild im Vergleich zur Fehlerüberprüfung
Bei einer herkömmlichen Fehlerüberprüfung wird der PC zurückgesetzt, und die Arbeit des Benutzers wird unterbrochen. Das Ziel des Kernel-Liveabbilds besteht darin, Daten zu sammeln, um eine ungewöhnliche Situation zu beheben, aber das Betriebssystem den Betrieb fortsetzen zu lassen. Dies reduziert Ausfallzeiten im Vergleich zu einer Fehlerüberprüfung auf "nicht fatal", aber schwerwiegende Fehler und Hängt. Kernel-Liveabbilder werden verwendet, wenn es möglich ist, das Betriebssystem in einem bekannten guten Zustand wiederherzustellen. Eine Hardwarezurücksetzung eines Subsystems, z. B. Video/Anzeige, USB3 oder WLAN, kann es diesen Systemen ermöglichen, zu einem bekannten guten Zustand zurückzukehren, mit minimalen Auswirkungen auf den Benutzer.
Ein Kernel-Liveabbild erstellt eine konsistente Momentaufnahme des Kernelspeichers und speichert es in einer Speicherabbilddatei für die zukünftige Analyse. Um die Auswirkungen auf die Leistung zu minimieren, werden Speicherkopietechniken verwendet, um die Speicherabbilddatei in kurzer Zeit zu erstellen. Darüber hinaus wird die Sammlung von Liveabbildern gedrosselt, sodass die Auswirkungen der Benutzer minimiert werden.
Ein Kernel-Live-Dump ist effektiv für eine Kategorie von Problemen, bei denen etwas lange dauert und dennoch nichts technisch fehlschlägt. Ein Watchdog-Timer kann initialisiert werden, wenn ein Vorgang gestartet wird. Wenn der Watchdog abläuft, bevor der Vorgang in der erwarteten Zeit abgeschlossen ist, kann ein Live-Dump des Systems durchgeführt werden. Anschließend kann das Dump analysiert werden, indem der Aufrufstapel und die zugehörige Wartekette für diesen Vorgang durchlaufen werden, um zu untersuchen, warum er nicht mit dem erwarteten Zeitrahmen abgeschlossen wird.
Systemprotokolle funktionieren gut, wenn etwas fehlschlägt und die Codebesitzer die Ursache des Fehlers aufgezeichnet hat und die Ursache identifizieren kann. Liveabbilder, die Watchdog-Timer verwenden, versuchen, Fehlerpfade abzufangen, die nicht erwartet und protokolliert wurden. Aber wie bei jedem Fehler können die Systemprotokolle andere Probleme identifizieren, die Hinweise auf die spezifische Ursache des Fehlers liefern können.
Inhalt der Kernel-Liveabbilddatei
Ähnlich wie normale Speicherabbilddateien können Liveabbilddateien Minidumps (mit sekundären Daten) und vollständige Kernelabbilder enthalten, die auch Denkmodusspeicher enthalten können, ähnlich wie aktive Dumps. Allgemeine Informationen zum Inhalt von Speicherabbilddateien finden Sie unter Varianten von Speicherabbilddateien im Kernelmodus. Einige Liveabbilder versuchen nur, Minidumps zu erfassen, da sie für die Erfassung bestimmter hardwarebezogener Daten konzipiert sind, während andere versuchen, ein größeres Kernel-Liveabbild zu erfassen.
Für die Leistung, Dateigröße und für die Zuverlässigkeit von Dump-Erfassungen sind einige Informationen nicht enthalten, z. B. Seiten aus listen- und dateicaches.
Liveabbilddateien enthalten in der Regel Speicherseiten wie:
- KdDebuggerBlock
- Liste der geladenen Module
Für jeden Prozessor werden die folgenden Informationen in Kernelabbildern erfasst:
- KiProcessorBlock
- PRCBs
- Aktueller Stapel
- Aktuelle Seitenverzeichnistabelle
- KI_USER_SHARED_DATA
- NTOS-Kernelimage
- HAL Image
Weitere Informationen in Kernelabbildern können folgendes umfassen:
- Thread-/Speicherstatus
- In-Memory-Protokollierung
Einige Liveabbilder enthalten möglicherweise Prozessseiten im Benutzermodus.
Zusätzliche domänenspezifische Daten, z. B. USB-spezifische Daten für USB-Fehler, können für einige Liveabbilder enthalten sein.
Partielle Kernel-Liveabbilddatei
Eine partielle Kernel-Liveabbilddatei kann in Situationen generiert werden, in dem Live-Dump nicht zuverlässig alle beabsichtigten Speicherseiten erfassen kann. Die Informationen, die in einem Teilabbild erfasst werden, werden gefiltert und priorisiert, indem Seiten erfasst werden, die wichtige Daten enthalten, die zum Generieren eines gültigen Dumps vor anderen Seiten erforderlich sind. Beispielsweise werden die Kernelseiten über Benutzerseiten priorisiert, wenn das Liveabbild Benutzerseiten enthält. In einigen Situationen stehen nicht genügend Ressourcen zur Verfügung, um alle beabsichtigten optionalen Speicherseiten zu erfassen, daher fehlt der Speicher möglicherweise in der Speicherabbilddatei. Die Speicherabbilddatei sollte weiterhin vom WinDbg-Debugger erkannt werden, aber beim Versuch, speicherabbilden zu können, fehler auftreten. Wenn der Debugger beim Versuch, Speicher an einer Adresse zu speichern, einen Fehler anzeigt, können Sie die Erweiterung !pte verwenden, um zu überprüfen, ob der PTE für eine Adresse gültig ist oder nicht. Dies kann hilfreich sein, um festzustellen, ob die Speicheradresse wirklich ungültig ist oder ob die Seite gültig ist, aber nicht in der Speicherabbilddatei verfügbar ist.
Analysieren von Live-Dump-Dateien
Wenn ein Liveabbild auftritt, kann die Speicherabbilddatei mithilfe der gleichen Techniken analysiert werden, die für andere Speicherabbilddateien verwendet werden. Um den Speicherinhalt während eines Fehlers zu verstehen, sind Kenntnisse der Prozessorspeicherregister und der Assemblerprogrammierung erforderlich.
Weitere Informationen finden Sie unter:
Verwenden von WinDbg zum Anzeigen von Codeinformationen zum Beenden des Liveabbilds
Wenn in diesem Thema kein bestimmter Live-Dump-Überprüfungscode angezeigt wird, verwenden Sie die "!analyze"-Erweiterung im Windows-Debugger (WinDbg) mit der folgenden Syntax (im Kernelmodus), indem Sie einen Live-Dump-Überprüfungscode ersetzen<code>
:
!analyze -show <code>
Wenn Sie diesen Befehl eingeben, zeigt WinDbg Informationen zum angegebenen Live-Dump-Überprüfungscode an. Wenn Ihre Standardzahlenbasis (Radix) nicht 16 ist, stellen Sie das Präfix <code>
mit 0x voran.
Stellen Sie dem Befehl "!analyze" die Live-Dump-Codeparameter bereit, um alle verfügbaren Parameterinformationen anzuzeigen. Wenn Sie beispielsweise Informationen zur Fehlerüberprüfung 0x144 BUGCODE_USB3_DRIVER mit einem Parameter 1-Wert von 0x3003 anzeigen möchten, verwenden Sie !analyze -show 0x144 0x3003
dies wie hier gezeigt.
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
Mehr zum Download von WinDbg finden Sie unterDebuggingtools für Windows (WinDbg) Weitere Informationen zu den WinDbg-Entwicklungstools finden Sie unter "Erste Schritte mit Windows-Debugging".
Speicherorte von Liveabbilddateien
Die Liveabbilder werden standardmäßig im Verzeichnis "C:\WINDOWS\LiveKernelReports" gespeichert.
Vollständige Dumps: %systemroot%\LiveKernelReports\*.dmp
Minidumps: %systemroot%\LiveKernelReports\<ComponentName>\*.dmp
Eine Verzeichnisstruktur wird verwendet, um Liveabbilder für verschiedene Komponenten zu speichern.
NDIS
PDCRevocation
PoW32kWatchdog
USBHUB3
WATCHDOG
Registrierungsschlüssel für Live-Dumps
Weitere Informationen zu Konfigurationsoptionen für vom System generierte Live-Kernelberichte finden Sie unter WER-Einstellungen.
Verwenden von PowerShell zum manuellen Auslösen eines Liveabbilds
Öffnen Sie eine PowerShell-Eingabeaufforderung als Administrator.
Rufen Sie den Anzeigenamen "StorageSubsystem" mithilfe des PowerShell-Befehls "Get-StorageSubSystem" ab.
C:\> Get-StorageSubSystem
FriendlyName HealthStatus OperationalStatus
------------ ------------ -----------------
Windows Storage on 10-2411-PC Healthy OK
- Verwenden Sie Get-StorageDiagnosticInfo, um ein Liveabbild für das obige Subsystem (zusammen mit anderen Diagnoseprotokollen) zu generieren. Weitere Informationen finden Sie unter Get-StorageDiagnosticInfo.
C:\> Get-StorageDiagnosticInfo -StorageSubSystemFriendlyName "Windows Storage on 10-2411-PC" -IncludeLiveDump -DestinationPath C:\destinationfolder
- Die Ausgabe gibt an, dass die angeforderten Informationen generiert werden.
Gathering storage subsystem diagnostic information
Running
[oooooooooooo ]
- Das Dump befindet sich in
[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
- Wenn Sie den Debugger zum Ausführen von !analyze in der Dumpdatei verwenden, wird angegeben, dass es sich um einen Liveabbildcode von LIVE_SYSTEM_DUMP (161) handelt.
Kernel-Liveabbildcodes
Die folgende Tabelle enthält Links zu Kernel-Liveabbildcodes.
Diese Stoppcodes können für Live-Dumps oder zum Überprüfen des Geräts verwendet werden.
Code | Name |
---|---|
0x00000124 | WHEA_UNCORRECTABLE_ERROR |
0x00000144 | BUGCODE_USB3_DRIVER |
0x00000164 | WIN32K_CRITICAL_FAILURE |
Siehe auch
Bug Check Code Reference (Referenz zu Fehlerüberprüfungscodes)