Prise de dumps avec WER

Bonjour,

Je vous partage un paramétrage qui peut être très utile sur un serveur de production (ou sur votre pc) afin d'investiguer après coup sur l'origine de crashes applicatifs. Vous allez me dire : mais on sait déjà faire en branchant un débogueur comme Adplus ou avec DebugDiag! Oui, effectivement. La subtiité est que je vous propose de faire cette prise de dumps sans avoir de composant ou service actif à mettre en place qui "surveillerait" les processus. En effet, nous utilisons la fonctionnalité WER (Windows Error Reporting) fournit par Windows. 

Le paramétrage est tout simple : une ruche avec trois valeurs dans le registre :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps

  • DumpFolder : Chemin vers le répertoire dans lequel enregistrer les dumps
  • DumpCount : Nombre maximum de dumps pouvant être créés
  • DumpType : Type de dump à créer (1 pour mini dump et 2 pour full dump)

 Voici un exemple que vous pouvez utiliser avec comme répertoire de sortie C:\Dumps :

 

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps]
"DumpFolder"=hex(2):43,00,3a,00,5c,00,44,00,75,00,6d,00,70,00,73,00,00,00
"DumpCount"=dword:00000010
"DumpType"=dword:00000002

 

A noter qu'il vous est possible d'effectuer ce paramétrage seulement pour un processu donnée (et non pour tous les procesus). Dans ce cas, il suffit de créer une sous-ruche portant le même nom que l'éxécutable et ayant la même structure :

 

--

 

La référence MSDN est la suivante : https://msdn.microsoft.com/en-us/library/bb787181(VS.85).aspx 

A bientot,

Sebastien.