Épisode
Outils de défragmentation #167 - Débogage des vidages sur incident en mode utilisateur Redux
Dans cet épisode de Defrag Tools, Andrew Richards et Chad Beeder utilisent les outils de débogage pour Windows (WinDbg) pour déterminer la cause racine de divers incidents d’application qui se sont produits sur l’ordinateur d’Andrew. Nous utilisons Sysinternals ProcDump pour capturer les vidages.
Lors du débogage, nous prenons un tour secondaire dans la configuration des couleurs des fichiers compressés et chiffrés dans l’Explorateur Windows, et utilisons Sysinternals Process Monitor pour déterminer pourquoi le débogueur obtenait un accès refusé lors du chargement de l’extension de débogueur PDE.
Nous avons fait une enquête similaire dans ces deux épisodes :
- Outils de défragmentation #135 - Débogage des vidages sur incident en mode utilisateur partie 1
- Outils de défragmentation #136 - Débogage des vidages sur incident en mode utilisateur partie 2
Nous abordons comment installer les outils de débogage pour Windows dans cet épisode :
Obtenez les outils Sysinternals à partir de http://www.sysinternals.com. Nous utilisons :
Obtenir l’extension du débogueur PDE à partir des outils Defrag OneDrive
Obtenez votre chemin d’accès de symbole au serveur de symboles publics Microsoft :
- Via une variable d’environnement
setx /m _NT_SYMBOL_PATH SRV*C :\My\Sym*https://msdl.microsoft.com/download/symbols - Dans le débogueur
.sympath SRV*C :\My\Sym*https://msdl.microsoft.com/download/symbols
Pour collecter des vidages d’incidents sur votre propre ordinateur, installez ProcDump en tant que débogueur Postmortem (AeDebugger) :
md c :\dumps
procdump.exe -ma -i c :\dumps
Sur n’importe quel vidage (utilisateur ou noyau), vous pouvez exécuter une analyse automatisée pour afficher le problème :
!analyze -v
Aide-mémoire de débogage
- c0000005 est une violation d’accès - utiliser .ecxr &k
- c000027b est une exception stowed (Store Apps) - use !pde.dse
- e0434352 est une exception CLR - use !sos.pe
- e0697282 est une exception C++ - utiliser .ecxr &k
- 80000003 est un point d’arrêt - utiliser !analyze -v
- Lorsque vous tapez un nombre décimal, préfixez-le « 0n »
- Lors de la saisie d’un nombre hexadécimal, préfixez-le « 0x » (préfixe par défaut)
Commandes de débogueur courantes
.exr -1
- Afficher le code d’exception et les paramètres d’exception
- Les nombres qui ressemblent à C0xxxxxx et 80xxxx sont HRESULTs (Codes d’erreur)
- Nombre qui ressemble à 7FFFxxxxxxxx sont généralement des adresses de code (assembleur)
!adresse
- Afficher les informations d’adresse - Commited/Reserved/Free, Image/Mappé/Private
- Permet de déterminer si un nombre est du code ou des données.
Dans
- Lister l’adresse la plus proche
- Affiche le symbole à ou près de l’adresse
- Permet de déterminer si un nombre est du code ou des données.
.ecxr
- Remplacez le contexte de débogage par le point de l’exception (au lieu d’être dans le contexte de rapport d’erreurs Windows)
r
- Affichez les registres dans le contexte actuel. (.ecxr produit la même sortie)
k
- Afficher la pile des appels
lmvm
- Afficher le module chargé de manière détaillée avec un masque
- Afficher les détails d’un module, notamment le dossier, l’horodatage, la description, le copyright, la version du produit/fichier
| (Barre verticale ou Caractère de canal)
- Afficher le chemin d’accès de l’exécutable (par exemple, c :\windows\notepad.exe)
!ext.error
- Obtenez la description d’un code d’erreur. Il est préférable de décrire les codes d’erreur système.
!pde.err
- Obtenez la description d’un code d’erreur. Bonne description des HRESULTs (80xxxxxx et C0xxxxxx)
!pde.dpx
- Supprimez le thread actuel pour la preuve (symboles, structures, chaînes, etc.)
.Formats
- Affiche le nombre dans différents formats.
- Moyen simple de travailler si un nombre est en fait du texte ASCII, ou une date/heure
!sos.pe
- Afficher une exception CLR.
- S’il existe une exception interne, cliquez sur le lien pour l’afficher.
.cordll -u &.cordll -l
- Si SOS n’est pas chargé, essayez d’effectuer un déchargement et une charge de la prise en charge du CLR.
!peb
- Afficher le bloc d’environnement de processus (modules, ligne de commande, variables d’environnement, etc.)
!Teb
- Afficher le bloc d’environnement du thread actuel (plage de pile, dernier code d’erreur, dernier code d’état, etc.)
!Gle
- Obtenir la dernière erreur
- Afficher le dernier code d’erreur et le dernier code d’état du thread actuel
.Cls
- Effacez l’écran.
.reload
- Forcez un rechargement (téléchargement) de symboles pour les modules sur la pile actuelle.
.reload /f
- Forcez un rechargement complet (téléchargement) de symboles pour les modules sur la pile actuelle.
Stocker des applications
Pour afficher les applications du Windows Store actuellement installées et leur version, utilisez :
Éditeur du Registre (regedit.exe)
- HKEY_CURRENT_USER\SOFTWARE\Classes\ActivateableClasses\Package
PowerShell
Dans cet épisode de Defrag Tools, Andrew Richards et Chad Beeder utilisent les outils de débogage pour Windows (WinDbg) pour déterminer la cause racine de divers incidents d’application qui se sont produits sur l’ordinateur d’Andrew. Nous utilisons Sysinternals ProcDump pour capturer les vidages.
Lors du débogage, nous prenons un tour secondaire dans la configuration des couleurs des fichiers compressés et chiffrés dans l’Explorateur Windows, et utilisons Sysinternals Process Monitor pour déterminer pourquoi le débogueur obtenait un accès refusé lors du chargement de l’extension de débogueur PDE.
Nous avons fait une enquête similaire dans ces deux épisodes :
- Outils de défragmentation #135 - Débogage des vidages sur incident en mode utilisateur partie 1
- Outils de défragmentation #136 - Débogage des vidages sur incident en mode utilisateur partie 2
Nous abordons comment installer les outils de débogage pour Windows dans cet épisode :
Obtenez les outils Sysinternals à partir de http://www.sysinternals.com. Nous utilisons :
Obtenir l’extension du débogueur PDE à partir des outils Defrag OneDrive
Obtenez votre chemin d’accès de symbole au serveur de symboles publics Microsoft :
- Via une variable d’environnement
setx /m _NT_SYMBOL_PATH SRV*C :\My\Sym*https://msdl.microsoft.com/download/symbols - Dans le débogueur
.sympath SRV*C :\My\Sym*https://msdl.microsoft.com/download/symbols
Pour collecter des vidages d’incidents sur votre propre ordinateur, installez ProcDump en tant que débogueur Postmortem (AeDebugger) :
md c :\dumps
procdump.exe -ma -i c :\dumps
Sur n’importe quel vidage (utilisateur ou noyau), vous pouvez exécuter une analyse automatisée pour afficher le problème :
!analyze -v
Aide-mémoire de débogage
- c0000005 est une violation d’accès - utiliser .ecxr &k
- c000027b est une exception stowed (Store Apps) - use !pde.dse
- e0434352 est une exception CLR - use !sos.pe
- e0697282 est une exception C++ - utiliser .ecxr &k
- 80000003 est un point d’arrêt - utiliser !analyze -v
- Lorsque vous tapez un nombre décimal, préfixez-le « 0n »
- Lors de la saisie d’un nombre hexadécimal, préfixez-le « 0x » (préfixe par défaut)
Commandes de débogueur courantes
.exr -1
- Afficher le code d’exception et les paramètres d’exception
- Les nombres qui ressemblent à C0xxxxxx et 80xxxx sont HRESULTs (Codes d’erreur)
- Nombre qui ressemble à 7FFFxxxxxxxx sont généralement des adresses de code (assembleur)
!adresse
- Afficher les informations d’adresse - Commited/Reserved/Free, Image/Mappé/Private
- Permet de déterminer si un nombre est du code ou des données.
Dans
- Lister l’adresse la plus proche
- Affiche le symbole à ou près de l’adresse
- Permet de déterminer si un nombre est du code ou des données.
.ecxr
- Remplacez le contexte de débogage par le point de l’exception (au lieu d’être dans le contexte de rapport d’erreurs Windows)
r
- Affichez les registres dans le contexte actuel. (.ecxr produit la même sortie)
k
- Afficher la pile des appels
lmvm
- Afficher le module chargé de manière détaillée avec un masque
- Afficher les détails d’un module, notamment le dossier, l’horodatage, la description, le copyright, la version du produit/fichier
| (Barre verticale ou Caractère de canal)
- Afficher le chemin d’accès de l’exécutable (par exemple, c :\windows\notepad.exe)
!ext.error
- Obtenez la description d’un code d’erreur. Il est préférable de décrire les codes d’erreur système.
!pde.err
- Obtenez la description d’un code d’erreur. Bonne description des HRESULTs (80xxxxxx et C0xxxxxx)
!pde.dpx
- Supprimez le thread actuel pour la preuve (symboles, structures, chaînes, etc.)
.Formats
- Affiche le nombre dans différents formats.
- Moyen simple de travailler si un nombre est en fait du texte ASCII, ou une date/heure
!sos.pe
- Afficher une exception CLR.
- S’il existe une exception interne, cliquez sur le lien pour l’afficher.
.cordll -u &.cordll -l
- Si SOS n’est pas chargé, essayez d’effectuer un déchargement et une charge de la prise en charge du CLR.
!peb
- Afficher le bloc d’environnement de processus (modules, ligne de commande, variables d’environnement, etc.)
!Teb
- Afficher le bloc d’environnement du thread actuel (plage de pile, dernier code d’erreur, dernier code d’état, etc.)
!Gle
- Obtenir la dernière erreur
- Afficher le dernier code d’erreur et le dernier code d’état du thread actuel
.Cls
- Effacez l’écran.
.reload
- Forcez un rechargement (téléchargement) de symboles pour les modules sur la pile actuelle.
.reload /f
- Forcez un rechargement complet (téléchargement) de symboles pour les modules sur la pile actuelle.
Stocker des applications
Pour afficher les applications du Windows Store actuellement installées et leur version, utilisez :
Éditeur du Registre (regedit.exe)
- HKEY_CURRENT_USER\SOFTWARE\Classes\ActivateableClasses\Package
PowerShell
Vous voulez donner votre avis ? Soumettez un problème ici.