Débogage de projets DLL
Les modèles suivants créent des DLL :
(C++, C# et Visual Basic) : bibliothèque de classes
(C++, C# et Visual Basic) : bibliothèque de contrôles Windows Forms
Le débogage d'une bibliothèque de contrôles Windows est semblable à celui d'un projet Bibliothèque de classes. Dans la plupart des cas, vous appelez le contrôle Windows à partir d'un autre projet. Lorsque vous déboguez le projet appelant, vous pouvez exécuter pas à pas le code de votre contrôle Windows, définir des points d'arrêt et effectuer d'autres opérations de débogage. Pour plus d'informations, consultez Contrôles Windows Forms.
(C# et Visual Basic) : bibliothèque de contrôles Web
Pour plus d'informations, consultez Bibliothèque de contrôles Web (code managé).
(C++) : contrôle Active X MFC et contrôle ActiveX Smart Device MFC
Les contrôles ActiveX sont des contrôles téléchargeables depuis Internet sur un ordinateur client et qui peuvent être affichés et activés sur des pages Web.
Leur débogage est semblable à celui d'autres types de contrôles dans la mesure où ils ne peuvent pas être exécutés comme des applications autonomes, mais qu'ils doivent être incorporés dans une page Web HTML. Pour plus d'informations, consultez Comment : déboguer un contrôle ActiveX.
(C++) : DLL Smart Device MFC
Pour plus d'informations, consultez Techniques de débogage MFC.
Cette section contient également des informations sur les rubriques suivantes :
Cette rubrique contient les sections suivantes qui réunissent des informations relatives à la préparation du débogage des bibliothèques de classes :
Génération d'une version Debug
Débogage en mode mixte
Modification des configurations par défaut
Procédures pour déboguer la DLL
Application appelante
Contrôles sur une page Web
La fenêtre Exécution
Génération d'une version Debug
Quelle que soit la façon dont vous démarrez le débogage, vérifiez que vous générez d'abord la version Debug de la DLL et que celle-ci se trouve à l'emplacement attendu par l'application. Cette étape semble évidente mais si vous l'omettez, l'application peut rechercher et charger une autre version de la DLL. Le programme continuera alors de s'exécuter, et vous vous demanderez pourquoi votre point d'arrêt n'a pas été atteint. Durant le processus de débogage, vous pouvez vérifier quelles DLL ont été chargées par votre programme en ouvrant la fenêtre Modules du débogueur. La fenêtre Modules répertorie chaque DLL ou EXE chargé au cours du processus de débogage. Pour plus d'informations, consultez Comment : utiliser la fenêtre Modules.
Pour que le débogueur s'attache au code écrit en C++, le code doit émettre DebuggableAttribute. Vous pouvez ajouter cela automatiquement à votre code grâce à la liaison, à l'aide de l'option /ASSEMBLYDEBUG.
Débogage en mode mixte
L'application appelante qui appelle votre DLL peut être écrite en code managé ou natif. Si votre DLL managée est appelée par du code natif et que vous souhaitez déboguer les deux types de code, vous devez activer les débogueurs managés et natifs. Vous pouvez sélectionner ces paramètres dans la boîte de dialogue ou la fenêtre Pages de propriétés de <Projet>. Tout dépend si vous avez démarré le débogage à partir du projet DLL ou du projet de l'application appelante. Pour plus d'informations, consultez Comment : déboguer en mode mixte.
Modification des configurations par défaut
Lorsque vous créez un projet d'application console à l'aide du modèle de projet, Visual Studio crée automatiquement les paramètres requis pour les configurations Debug et Release. Si nécessaire, vous pouvez modifier ces paramètres. Pour plus d'informations, consultez Paramètres de projet pour une configuration Debug C++, Paramètres de projet pour des configurations Debug C#, Paramètres de projet pour une configuration Debug Visual Basic et Comment : définir des configurations Debug et Release.
Procédures pour déboguer la DLL
Chacun des projets de cette section crée une DLL. Vous ne pouvez pas exécuter une DLL directement, celle-ci doit être appelée par une application, généralement un EXE. Pour plus d'informations, consultez Création et gestion de projets Visual C++. L'application appelante peut satisfaire un des critères suivants :
Une application générée dans un autre projet de la même solution Visual Studio qui contient la bibliothèque de classes.
Une application existante déjà déployée sur un ordinateur de test ou de production.
Située sur le Web et accessible via une URL.
Une application Web qui contient une page Web incorporant la DLL.
Débogage de l'application appelante
Pour déboguer une DLL, commencez par déboguer l'application appelante, en général il s'agit d'un EXE ou d'une application Web. Pour cela, différentes possibilités s'offrent à vous.
Si vous disposez d'un projet pour l'application appelante, vous pouvez ouvrir ce projet et démarrer l'exécution à partir du menu Debug. Pour plus d'informations, consultez <PAVEOVER>Comment : arrêter l'exécution.
Si l'application appelante est un programme existant déjà déployé sur un ordinateur de test ou de production et qu'elle est en cours d'exécution, vous pouvez y attacher le débogueur. Utilisez cette méthode si la DLL est un contrôle hébergé par Internet Explorer ou un contrôle sur une page Web. Pour plus d'informations, consultez <PAVEOVER> Comment : attacher à un processus en cours d'exécution.
Vous pouvez la déboguer à partir du projet de DLL. Pour plus d'informations, consultez Comment : déboguer à partir d'un projet DLL.
Vous pouvez la déboguer à partir de la fenêtre Exécution de Visual Studio. Dans ce cas, la fenêtre Exécution joue le rôle de l'application.
Avant de commencer le débogage de l'application appelante, vous devez généralement définir un point d'arrêt dans la bibliothèque de classes. Pour plus d'informations, consultez Breakpoints and Tracepoints. Lorsque le point d'arrêt est atteint, vous pouvez exécuter le code pas à pas, en observant chaque action ligne par ligne, jusqu'à ce que vous ayez isolé le problème. Pour plus d'informations, consultez <PAVEOVER> Vue d'ensemble du code pas à pas.
Contrôles sur une page Web
Pour déboguer un contrôle de page Web, créez une page ASP.NET qui l'incorpore si elle n'existe pas déjà. Puis, placez des points d'arrêt dans le code de la page Web ainsi que dans le code du contrôle. Vous appelez alors la page Web à partir de Visual Studio.
Avant de commencer le débogage de l'application appelante, vous devez généralement définir un point d'arrêt dans la DLL. Lorsque le point d'arrêt est atteint, vous pouvez exécuter le code pas à pas, en observant chaque action ligne par ligne, jusqu'à ce que vous ayez isolé le problème. Pour plus d'informations, consultez Breakpoints and Tracepoints.
La fenêtre Exécution
Vous pouvez évaluer les fonctions ou les méthodes dans la DLL sans application appelante. Effectuez le débogage au moment du design et utilisez la fenêtre Exécution. Pour ce type de débogage, suivez la procédure ci-dessous pendant l'ouverture du projet DLL :
Ouvrez la fenêtre Exécution du débogueur.
Pour tester une méthode appelée Test dans une classe Class1, instanciez un objet de type Class1 en tapant le code C# suivant dans la fenêtre Exécution. Ce code managé fonctionne pour Visual Basic et C++, avec les modifications de syntaxe appropriées :
Class1 obj = new Class1();
En C#, tous les noms doivent être qualifiés complets. De plus, toutes les méthodes ou variables doivent être dans la portée et le contexte actuels de la session de débogage.
En supposant que Test nécessite un paramètre int, évaluez Test à l'aide de la fenêtre Exécution :
?obj.Test(10)
Le résultat sera imprimé dans la fenêtre Exécution.
Vous pouvez continuer à déboguer Test en y insérant un point d'arrêt, puis en réévaluant la fonction :
?obj.Test(10);
Une fois le point d'arrêt atteint, vous pourrez exécuter Test pas à pas. Lorsque l'exécution aura quitté Test, le débogueur repassera en mode Design.
Voir aussi
Référence
Paramètres de projet pour une configuration Debug C++
Concepts
Paramètres de projet pour des configurations Debug C#
Paramètres de projet pour une configuration Debug Visual Basic
Autres ressources
Préparation du débogage : types de projets Visual C++
Préparation du débogage : types de projets C#, F# et Visual Basic