Debugging Windows - Analyse d'un crashdump BSOD
Introduction
Nous avons tous déja vu au moins une fois un blue screen of death (BSOD) sur Windows. Mais que se passe t’il exactement ? Ou se trouvent les informations du crash ? Comment les analyser ?
Lorsqu’une erreur critique (également appelée « erreur d’arrêt ») se produit dans Windows, le kernel rencontre une condition dans laquelle il ne peut plus fonctionner en toute sécurité. Cela peut être dû à un matériel défectueux, à un logiciel corrompu ou à des fichiers DLL manquants, entre autres raisons. Pour protéger le système, Windows arrête toutes les opérations et affiche l’écran bleu avec des informations d’erreur. Ceci est communément appelé « écran bleu de la mort » ou BSOD.
Le BSOD contient des informations importantes sur l’erreur à l’origine du crash, notamment le nom de l’erreur, son code hexadécimal et, dans certains cas, des paramètres supplémentaires répertoriés entre parenthèses. Ces détails peuvent être utilisés pour diagnostiquer et résoudre le problème.
En plus d’afficher le BSOD, Windows crée également un fichier crashdump. Ce fichier contient une image de la mémoire au moment du crash, qui peut être utilisée pour une analyse plus approfondie. Le fichier crashdump se trouve généralement dans C:\Windows\MEMORY.DMP
.
Installation du Windows SDK
Pour travailler avec les kernel crashdumps de Windows, nous allons avoir besoin du logiciel WinDbg, présent dans le Software Developement Kit (SDK) de Windows:
-
Pour Windows 7, 8, 10 and 11:
-
Pour Windows Vista and XP:
Installation des outils
Dans un premier temps, nous allons installer les Debbuging Tools for Windows
du SDK :
A la fin de l’installation, nous avons WinDbg d’installé sur la machine pour toutes les architectures supportées par Windows 10.
Configuration de WinDbg
Maintenant que nous avons WinDbg d’installé, nous devons le configurer avant d’importer un Crashdump. La première chose à configurer est la source de symboles pour le débogage. Pour cela, il faut aller dans le menu File > Symbol file path
et coller cette valeur permettant d’ajouter les sources de symboles locales (cache dans C:\Windows\PDBcache
) et en ligne (depuis http://msdl.microsoft.com/download/symbols
):
SRV*C:\Windows\PDBcache*http://msdl.microsoft.com/download/symbols
Ce qui nous donne:
Cliquez ensuite sur OK
et la source de symboles est configurée.
Chargement du dump dans WinDbg
Tout d’abord, nous devons lancer WinDbg en tant qu’Administrateur pour pouvoir lire le fichier MEMORY.DMP
contenant toutes les informations récupérées au moment du crash et du Blue Screen of Death.
Ensuite nous choisissons le dump mémoire, (dans C:\Windows\MEMORY.DMP
):
Analyse du crash
Maintenant que nous avons le dump mémoire chargé dans WinDbg, nous pouvons démarrer une analyse du crash:
Une fois le nous pouvons lancer une autoanalyse du crash avec !analyze -v
. Ces premiers résultats d’analyse nous permettent d’avoir une idée de ce qui a causé le crash, et dans quelle librairie / fonction il s’est produit: