Windows debugging - Analyse d'un crash dump 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 ?
Au moment d’un blue screen of death (BSOD), le système Windows génère un fichier situé dans C:\Windows\MEMORY.DMP
contenant toutes les informations utile sur l’état du système au moment du crash.
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: