Informations de référence sur le code de vidage dynamique du noyau
Cette section contient des descriptions des codes de vidage en direct du noyau courants qui peuvent se produire. Les vidages en direct ne réinitialisent pas le système d’exploitation, mais permettent la capture d’informations de mémoire pour les situations anormales où le système d’exploitation peut continuer.
Notes
Cette rubrique s’adresse aux développeurs. Si vous êtes un client dont le système a affiché un écran bleu avec un bogue case activée code, consultez Résoudre les erreurs d’écran bleu.
Vidage dynamique du noyau par rapport au case activée de bogues
Avec une case activée de bogue traditionnelle, le PC se réinitialise et le travail de l’utilisateur est interrompu. L’objectif du vidage dynamique du noyau est de collecter des données pour résoudre les problèmes d’une situation anormale, mais permettre au système d’exploitation de continuer à fonctionner. Cela réduit les temps d’arrêt par rapport à un bogue case activée pour les défaillances et les blocages « non irrécupérables » mais à fort impact. Les vidages dynamiques du noyau sont utilisés lorsqu’il est possible de récupérer le système d’exploitation à un état correct connu. Par exemple, une réinitialisation matérielle d’un sous-système, comme la vidéo/l’affichage, USB3 ou Wi-Fi peut permettre à ces systèmes de revenir à un état correct connu, avec un impact minimal sur l’utilisateur.
Un vidage dynamique du noyau crée une instantané cohérente de la mémoire du noyau et l’enregistre dans un fichier de vidage pour l’analyse future. Pour réduire l’impact sur les performances, des techniques de copie de mémoire sont utilisées pour créer le fichier de vidage dans un court laps de temps. En outre, la collecte de vidages en direct est limitée, de sorte que l’impact sur l’utilisateur est réduit.
Un vidage dynamique du noyau est efficace pour une catégorie de problèmes où quelque chose prend beaucoup de temps, et pourtant rien n’est techniquement défaillant. Un minuteur de surveillance peut être initialisé lorsqu’une opération est démarrée. Si le chien de garde expire avant la fin de l’opération dans le délai prévu, un vidage en direct du système peut être effectué. Ensuite, le vidage peut être analysé en parcourant la pile des appels et la chaîne d’attente associée pour cette opération afin d’examiner pourquoi elle ne se termine pas avec le délai attendu.
Les journaux système fonctionnent bien quand un problème échoue et que le propriétaire de code a enregistré la cause de la défaillance et peut en identifier la cause. Les vidages en direct qui utilisent des minuteurs de surveillance tentent d’intercepter les chemins d’échec qui n’ont pas été anticipés et enregistrés. Mais comme pour chaque défaillance, les journaux système peuvent identifier d’autres problèmes qui peuvent fournir des indices sur la cause racine spécifique de la défaillance.
Contenu du fichier de vidage dynamique du noyau
Comme pour les fichiers de vidage standard, les fichiers de vidage en direct peuvent contenir des minidumps (avec des données secondaires) et des vidages de noyau complets, qui peuvent également inclure de la mémoire en mode utilisateur, similaire aux vidages actifs. Pour obtenir des informations générales sur le contenu des fichiers de vidage, consultez Variétés de Kernel-Mode fichiers de vidage. Certains vidages en direct tentent uniquement de capturer des minidumps, car ils sont conçus pour capturer des données matérielles spécifiques, tandis que d’autres peuvent tenter de capturer un vidage dynamique du noyau plus grand.
Pour les performances, la taille du fichier et la fiabilité des captures de vidage, certaines informations ne sont pas incluses, telles que les pages de la liste stand-by et les caches de fichiers.
Les fichiers de vidage dynamique contiennent généralement des pages de mémoire telles que :
- KdDebuggerBlock
- Liste des modules chargés
Pour chaque processeur, les informations suivantes sont capturées dans les vidages du noyau :
- KiProcessorBlock
- PRCBs
- Pile active
- Table de répertoires de pages actuelles
- KI_USER_SHARED_DATA
- Image du noyau NTOS
- HAL Image
Des informations supplémentaires dans les vidages du noyau peuvent inclure :
- État du thread/mémoire
- Journalisation en mémoire
Certains vidages dynamiques peuvent contenir des pages de processus en mode utilisateur.
D’autres données spécifiques au domaine, par exemple des données spécifiques à l’USB pour les défaillances USB, peuvent être incluses pour certains vidages en direct.
Fichier de vidage dynamique du noyau partiel
Un fichier de vidage dynamique du noyau partiel peut être généré dans des situations où le vidage dynamique ne peut pas capturer de manière fiable toutes les pages de mémoire prévues. Les informations capturées dans un vidage partiel sont filtrées et hiérarchisées, en capturant les pages qui contiennent des données importantes nécessaires pour générer un vidage valide avant d’autres pages. Par instance, les pages du noyau sont prioritaires par rapport aux pages utilisateur, lorsque le vidage en direct inclut des pages utilisateur. Dans certains cas, il n’y a pas suffisamment de ressources disponibles pour capturer toutes les pages de mémoire facultatives prévues, de sorte que la mémoire peut manquer dans le fichier de vidage. Le fichier de vidage doit toujours être reconnu par le débogueur WinDbg, mais peut afficher des erreurs lors de la tentative de vidage de la mémoire. Si le débogueur affiche une erreur lors de la tentative de vidage de la mémoire à une adresse, vous pouvez utiliser l’extension !pte pour case activée si la PTE d’une adresse est valide ou non. Cela peut aider à déterminer si l’adresse mémoire n’est vraiment pas valide ou si la page est valide, mais tout simplement pas disponible dans le fichier de vidage.
Analyse des fichiers de vidage dynamique
Lorsqu’un vidage dynamique se produit, le fichier de vidage peut être analysé à l’aide des mêmes techniques que celles utilisées pour d’autres fichiers de vidage mémoire. Pour comprendre le contenu de la mémoire lors d’une défaillance, une connaissance des registres de mémoire du processeur et de la programmation d’assembly est requise.
Pour plus d'informations, consultez les pages suivantes :
Utilisation de WinDbg pour afficher des informations de code d’arrêt de vidage en direct
Si un code de vidage en direct spécifique n’apparaît pas dans cette rubrique, utilisez l’extension !analyze dans le débogueur Windows (WinDbg) avec la syntaxe suivante (en mode noyau), en <code>
remplaçant par un code de vidage en direct :
!analyze -show <code>
L’entrée de cette commande permet à WinDbg d’afficher des informations sur le code de vidage en direct spécifié. Si votre base de nombre par défaut (radix) n’est pas 16, préfixez <code>
0x.
Fournissez les paramètres de code de vidage en direct à la commande !analyze pour afficher les informations de paramètre disponibles. Par exemple, pour afficher des informations sur la vérification des bogues 0x144 BUGCODE_USB3_DRIVER, avec une valeur de paramètre 1 de 0x3003, utilisez !analyze -show 0x144 0x3003
comme indiqué ici.
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
Pour télécharger WinDbg, consultez Outils de débogage pour Windows. Pour en savoir plus sur les outils de développement WinDbg, consultez Prise en main avec le débogage Windows.
Emplacements des fichiers de vidage dynamique
Par défaut, les vidages dynamiques sont stockés dans le répertoire « C :\WINDOWS\LiveKernelReports ».
Vidages complets : %systemroot%\LiveKernelReports\*.dmp
Minidumps : %systemroot%\LiveKernelReports\<ComponentName>\*.dmp
Une structure de répertoires est utilisée pour stocker des vidages dynamiques pour différents composants.
NDIS
PDCRevocation
PoW32kWatchdog
USBHUB3
WATCHDOG
Clés de Registre de vidage dynamique
Pour plus d’informations sur les options de configuration pour les rapports de noyau en direct générés par le système, consultez Paramètres WER.
Utiliser PowerShell pour déclencher manuellement un vidage dynamique
Ouvrez et invitez Administrateur PowerShell.
Obtenez le nom convivial StorageSubsystem à l’aide de la commande PowerShell Get-StorageSubSystem .
C:\> Get-StorageSubSystem
FriendlyName HealthStatus OperationalStatus
------------ ------------ -----------------
Windows Storage on 10-2411-PC Healthy OK
- Utilisez Get-StorageDiagnosticInfo pour générer un vidage dynamique pour le sous-système ci-dessus (avec d’autres journaux de diagnostic). Pour plus d’informations, consultez Get-StorageDiagnosticInfo.
C:\> Get-StorageDiagnosticInfo -StorageSubSystemFriendlyName "Windows Storage on 10-2411-PC" -IncludeLiveDump -DestinationPath C:\destinationfolder
- La sortie indique que les informations demandées sont générées.
Gathering storage subsystem diagnostic information
Running
[oooooooooooo ]
- Le vidage se trouve à l’intérieur de
[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
- L’utilisation du débogueur pour exécuter !analyze sur le fichier de vidage indique qu’il s’agit d’un code de vidage dynamique de LIVE_SYSTEM_DUMP (161).
Codes de vidage dynamique du noyau
Le tableau suivant fournit des liens vers les codes de vidage en direct du noyau.
Ces codes d’arrêt peuvent être utilisés pour les vidages en direct ou pour boguer case activée l’appareil.
Code | Nom |
---|---|
0x00000124 | WHEA_UNCORRECTABLE_ERROR |
0x00000144 | BUGCODE_USB3_DRIVER |
0x00000164 | WIN32K_CRITICAL_FAILURE |
Voir aussi
Référence du Code de vérification de bogue
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour