Application de test pour générer des dumps IIS

Lors de la mise en place de DebugDiag, ADPLUS, Visual Studio, Windbg - ou tout autre outil de débogage - pour diagnostiquer un problème de plantage (crash) aléatoire, il peut être intéressant de valider le bon fonctionnement des outils de débogage en provoquant un crash de façon volontaire. A cet effet, vous pouvez utiliser la page « Crashtest.aspx » suivante :

<%@ Page Language="C#" %>

<script runat="server">

public class CrashClass
{
~CrashClass()
{
throw new System.NullReferenceException();

}
}

protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
CrashClass BuggyObj = new CrashClass();
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}
}

</script>

<head runat="server">
<title>CrashTest page</title>
</head>
<body>
<form id="form1" runat="server">
Click on the button to create a crash in IIS : <input type=submit value="Crashtest" >
</form>
</body>
</html>

Cette page provoque un plantage du processus IIS (W3WP.EXE) en produisant une exception non gérée dans le « Finalizer » (destructeur) d'un objet .Net. L'explication complète du plantage est disponible dans le blog de notre collègue Tess, disponible ICI.

Si vous utilisez la version 4 du Framework.net, WER (Windows Error Reporting) peut être utilisé pour générer un « Full dump » sur ce type de crash (se reporter à notre article sur le sujet pour les détails de mise en place).

Dans le cas où vous avez installé Visual Studio (ce n'est pas recommandé sur un serveur de production ! ), il conviendra de désactiver les options « JIT debugging » pour éviter que Visual Studio (ici en version 10) prenne la main lors du plantage :

Lancez Visual Studio et allez dans Tools/Options et décochez les options relatives à l'activation du « JIT debugging » :

Si l'accès à la page « Crashtest » produit ce message :

Il faudra en complément renommer la clé « Debugger » sous HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug :

 

Au final, vous devriez voir apparaître un dump dans le répertoire configuré pour WER :

L'avantage de cette option est de permettre la génération automatique de dumps lors de plantages d'application en se basant uniquement sur des outils fournis avec Windows 7/2008 R2.

@Bientôt,
Emmanuel Boersma et L'équipe de support IIS Microsoft France