Débogueur du Kit de développement Microsoft .NET Framework SDK
Peu importe vos compétences en tant que programmeur, vous serez amené à commettre des erreurs de temps en temps. La détection des problèmes liés à votre code peut être fastidieuse si vous ne disposez pas de l'outil approprié. Heureusement, la nature compilée de ASP.NET rend le débogage des applications Web identique au débogage des autres applications managées. En outre, le Kit de développement .NET Framework SDK comprend un débogueur rudimentaire parfaitement adapté à cette tâche.
Cette section décrit les étapes nécessaires au débogage d'applications ASP.NET Framework à l'aide du débogueur fourni dans ce Kit de développement. Le débogueur prend en charge le débogage par jonction manuelle des processus sur un ordinateur de développement local. La documentation du débogueur fournie dans ce Kit de développement est votre meilleure source d'informations sur des fonctionnalités spécifiques.
Activation du mode débogage pour des applications ASP.NET
Comme de nombreuses parties d'une application ASP.NET Framework sont compilées dynamiquement au moment de l'exécution (les fichiers .aspx et .asmx, par exemple), vous devez configurer la version d'exécution de ASP.NET pour compiler l'application avec les informations sur les symboles avant que l'application puisse être déboguée. Les symboles (fichiers .pdb) indiquent au débogueur comment rechercher les fichiers sources d'origine d'un fichier binaire et comment mapper les points d'arrêt du code à des lignes de ces fichiers sources. Pour configurer une application à compiler avec des symboles, insérez un attribut debug dans la section compilation située dans le groupe system.web du fichier Web.config, dans le répertoire racine de l'application, en procédant de la manière suivante :
<configuration>
<compilation debug="true"/>
</configuration>
Important : N'utilisez ce paramètre que si vous déboguez une application, car il peut affecter ses performances de manière significative.
Débogage d'applications ASP.NET
Lorsque vous avez activé le débogage de l'application, lancez une demande à la page que vous souhaitez déboguer. Cela permet de vous assurer que le processus runtime de ASP.NET (Aspnet_wp.exe) est créé et que l'application est chargée dans la mémoire.
Pour commencer le débogage :
- Lancez le débogueur .NET Framework, DbgClr.exe.
- Utilisez le menu Fichier...Fichier divers...Ouvrir un fichier pour ouvrir le fichier source de la page que vous souhaitez déboguer.
- Dans le menu Outils, choisissez Processus de débogage. L'écran qui figure sous ces instructions apparaît.
- Activez la case à cocher Afficher les processus système si elle ne l'est pas.
- Recherchez le processus Aspnet_wp.exe et double-cliquez dessus pour ouvrir la boîte de dialogue Attacher au processus.
- Assurez-vous que votre application figure dans la liste des applications en cours d'exécution et sélectionnez OK pour l'attacher.
- Fermez la boîte de dialogue Programmes.
Important : Lorsque vous joignez une application au processus Aspnet_wp.exe, tous les threads de ce processus sont gelés. N'essayez jamais de déboguer une application de production en cours d'exécution car les demandes clientes ne peuvent pas s'exécuter normalement aussi longtemps que le débogueur n'est pas détaché.
Définition de points d'arrêt
Pour définir un point d'arrêt dans votre page, cliquez sur la marge gauche d'une ligne contenant une instruction exécutable ou une signature de fonction/méthode. Un point rouge s'affiche à l'emplacement du point d'arrêt. Déplacez la souris jusqu'au point d'arrêt pour vérifier s'il est bien mappé à l'instance correcte de l'application dans le processus Aspnet_wp.exe.
Relancez la demande à la page à partir de votre navigateur. Le débogueur s'arrête au point d'arrêt et obtient le focus de la fenêtre active. À partir de ce point, vous pouvez effectuer un pas à pas, définir des espions de variables, afficher des variables locales, des informations de pile ou de code machine, etc. Vous pouvez afficher les objets intrinsèques de la page, tels que Request, Response et Session en utilisant this (C#) ou Me (VB) dans la fenêtre Espions.
Génération de symboles pour les composants précompilés
Pour déboguer des composants précompilés, tels que des objets métier ou des fichiers code-behind, vous devez compiler avec les informations sur les symboles avant le débogage. Vous pouvez généralement rechercher les symboles des assemblys à l'aide d'un algorithme de recherche basé sur les chemins d'accès. L'algorithme suivant est utilisé par la bibliothèque PDB (Mspdb70.dll) pour rechercher les informations sur les symboles :
- Recherchez le même chemin que l'assembly. Il s'agit de l'emplacement normal des fichiers .pdb.
Pour les assemblys locaux, placez les symboles (fichiers .pdb) dans le répertoire /bin de l'application, avec les DLL.
- Recherchez le chemin spécifié dans le fichier PE (l'en-tête de débogage NB10).
- Recherchez les emplacements des fichiers de symboles NT (variables d'environnement _NT_SYMBOL_PATH et _NT_ALT_SYMBOL_PATH).
Remarque : Si aucune information sur les symboles n'est détectée, le débogueur demande à l'utilisateur de spécifier un emplacement.
Résumé de la section
- Le débogueur décrit dans cette section prend en charge le débogage par jonction manuelle des processus sur un ordinateur de développement local.
- Le débogage permet au runtime ASP.NET de compiler dynamiquement avec les informations sur les symboles. Pour l'activer, définissez <compilation debug="true"/> dans le fichier Web.config situé dans le répertoire racine de l'application. Le paramètre du débogueur ne doit être activé que si vous déboguez une application, car il altère ses performances.
- Pour déboguer une application, lancez une demande à une page, joignez le débogueur au processus Aspnet_wp.exe, définissez des points d'arrêt et relancez la demande de la page.
- Lorsque vous joignez une application au processus Aspnet_wp.exe, tous les threads de ce processus sont gelés. Ne déboguez jamais une application de production en cours d'exécution car les demandes clientes ne peuvent pas s'exécuter normalement aussi longtemps que le débogueur n'est pas détaché.
- Pour déboguer des composants précompilés, tels que des objets métier ou des fichiers code-behind, vous devez compiler avec les informations sur les symboles avant le débogage.
|