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