Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Remarque
Le débogage d’instantané est désormais obsolète et ne sera plus disponible dans les récentes versions de Visual Studio 2022 et versions ultérieures. Bien qu’il n’y ait pas de remplacement exact, il existe d’autres outils qui peuvent fournir des diagnostics utiles :
Le débogueur d’instantanés capture un instantané de vos applications en production lorsque le code qui vous intéresse est exécuté. Pour indiquer au débogueur de prendre un instantané, vous définissez des points d’ancrage et des points de journal dans votre code. Le débogueur vous permet de voir exactement ce qui s’est passé, sans avoir d’impact sur le trafic de votre application de production. Snapshot Debugger peut vous aider à résoudre beaucoup plus vite les problèmes rencontrés dans les environnements de production.
Les snappoints et les logpoints sont similaires aux points d’arrêt, mais contrairement à ceux-ci, les snappoints n’arrêtent pas l’application lorsqu’ils sont atteints. En règle générale, la capture d’un instantané sur un point d’ancrage prend 10 à 20 millisecondes.
Dans ce tutoriel, vous allez :
- Démarrer le débogueur d’instantané
- Définir un point d'accrochage et afficher une capture instantanée
- Définir un point de consignation
Conditions préalables
Le débogueur de capture instantanée pour les machines virtuelles Azure et les groupes de machines virtuelles identiques Azure est disponible uniquement pour Visual Studio 2019 Entreprise ou version ultérieure avec la charge de travail de développement Azure. (Sous l’onglet Composants individuels , vous le trouvez sous Débogage et test>Débogueur d’instantané.)
S’il n’est pas déjà installé, installez Visual Studio 2019 Enterprise.
La collection d’instantanés est disponible pour les applications web Azure Virtual Machines\Virtual Machine Scale Sets suivantes :
- ASP.NET applications s’exécutant sur .NET Framework 4.6.1 ou version ultérieure.
- ASP.NET applications Core s’exécutant sur .NET Core 2.0 ou version ultérieure sur Windows.
Remarque
Visual Studio Enterprise s’exécutant sur Windows 32 bits ne pourra pas afficher les instantanés.
Ouvrez votre projet et démarrez le débogueur d’instantané
Ouvrez le projet que vous souhaitez déboguer.
Important
Pour déboguer des instantanés, vous devez ouvrir la même version du code source publiée sur votre service Azure Virtual Machine\Virtual Machine Scale Set.
Choisissez >. Sélectionnez la machine virtuelle Azure ou le groupe de machines virtuelles sur lequel votre application web est déployée et un compte de stockage Azure, puis cliquez sur Attacher. Le débogueur d’instantané prend également en charge Azure Kubernetes Service et Azure App Service.
Important
La première fois que vous sélectionnez Attacher le débogueur d’instantané pour votre machine virtuelle, IIS est automatiquement redémarré. La première fois que vous sélectionnez Attacher le débogueur d’instantané pour vos groupes de machines virtuelles identiques, vous devez mettre à niveau manuellement chaque instance des groupes de machines virtuelles identiques.
Remarque
(Visual Studio 2019 version 16.2 et plus récente) La prise en charge du nuage Azure est désormais activée dans le débogueur d’instantanés. Assurez-vous que la ressource Azure et le compte stockage Azure que vous sélectionnez proviennent du même cloud. Contactez votre administrateur Azure si vous avez des questions sur les configurations de conformité Azure de votre entreprise.
Les métadonnées des modules ne seront pas initialement activées, accédez à l’application web et le bouton Démarrer la collection sera actif. Visual Studio est désormais en mode de débogage instantané.
Remarque
Pour VMSS, l’utilisateur doit manuellement mettre à niveau les instances dans leurs groupes de machines virtuelles après avoir attaché le débogueur d’instantané pour la première fois.
La fenêtre Modules vous montre quand tous les modules ont été chargés pour la machine virtuelle Azure ou le groupe de machines virtuelles identiques (choisissez Déboguer > Windows > Modules pour ouvrir cette fenêtre).
Définir un point d’ancrage
Dans l’éditeur de code, cliquez sur la coupe gauche en regard d’une ligne de code qui vous intéresse pour définir un point d’ancrage. Assurez-vous qu’il s’agit du code que vous savez exécuter.
Cliquez sur Démarrer la collection pour activer le point d’ancrage.
Conseil / Astuce
Vous ne pouvez pas effectuer d’étape lors de l’affichage d’un instantané, mais vous pouvez placer plusieurs points d’ancrage dans votre code pour suivre l’exécution à différentes lignes de code. Si vous avez plusieurs points de capture dans votre code, le débogueur d’instantanés garantit que les instantanés correspondants proviennent de la même session utilisateur finale. Le débogueur d'instantané effectue cette opération même s'il y a de nombreux utilisateurs accédant à votre application.
Prendre un instantané
Une fois qu’un point d’ancrage est défini, vous pouvez générer manuellement un instantané en accédant à l’affichage du navigateur de votre site web et en exécutant la ligne de code marquée ou en attendant que vos utilisateurs génèrent un instantané à partir de leur utilisation du site.
Examiner les données de capture instantanée
Lorsque le point d’ancrage est atteint, un instantané s’affiche dans la fenêtre Outils de diagnostic. Pour ouvrir cette fenêtre, choisissez Déboguer > windows > Afficher les outils de diagnostic.
Double-cliquez sur le point d’ancrage pour ouvrir l’instantané dans l’éditeur de code.
À partir de cette vue, vous pouvez survoler des variables pour afficher les info-bulles de données, utiliser les fenêtres Locals, Watches et Pile d'appels, et également évaluer des expressions.
Le site web lui-même est toujours en direct et les utilisateurs finaux ne sont pas affectés. Un seul instantané est capturé par point d’ancrage par défaut : une fois qu’un instantané est capturé, le point d’ancrage est désactivé. Si vous souhaitez capturer un autre instantané au niveau du point d’ancrage, vous pouvez réactiver le point d’ancrage en cliquant sur Mettre à jour la collection.
Vous pouvez également ajouter d’autres points d’ancrage à votre application et les activer avec le bouton Mettre à jour la collection .
Vous avez besoin d’aide ? Consultez les pages de Dépannage et problèmes connus et la FAQ pour le débogage des instantanés.
Définir un point d'arrêt conditionnel
S’il est difficile de recréer un état particulier dans votre application, envisagez d’utiliser un snappoint conditionnel. Les points d’ancrage conditionnels vous aident à contrôler quand prendre un instantané, par exemple lorsqu’une variable contient une valeur particulière que vous souhaitez inspecter. Vous pouvez définir des conditions à l’aide d’expressions, de filtres ou de nombres d’accès.
Pour créer un point d’ancrage conditionnel
Cliquez avec le bouton droit sur une icône de point d’ancrage (la sphère creuse) et choisissez Paramètres.
Dans la fenêtre paramètres du point d’ancrage, tapez une expression.
Dans l’illustration précédente, l’instantané est pris uniquement pour le point d’ancrage quand
visitor.FirstName == "Dan".
Définir un point de consignation
En plus de prendre un instantané lorsqu’un point d’alignement est atteint, vous pouvez également configurer un point d’alignement pour journaliser un message (autrement dit, créer un point de journal). Vous pouvez définir des points de journal sans avoir à redéployer votre application. Les points de journalisation sont exécutés de manière virtuelle et n’entraînent aucun impact ni effet secondaire sur votre application en cours d’exécution.
Pour créer un logpoint
Cliquez avec le bouton droit sur une icône de point d’ancrage (l’hexagone bleu) et choisissez Paramètres.
Dans la fenêtre paramètres du point d’ancrage, sélectionnez Actions.
Dans le champ Message , vous pouvez entrer le nouveau message de journal que vous souhaitez enregistrer. Vous pouvez également évaluer des variables dans votre message de journal en les plaçant à l’intérieur d’accolades.
Si vous choisissez Envoyer à la fenêtre Sortie, lorsque le point de journal est atteint, le message s’affiche dans la fenêtre Outils de diagnostic.
Si vous choisissez Envoyer au journal des applications, lorsque le point de journalisation est atteint, le message s’affiche partout où vous pouvez voir des messages provenant de
System.Diagnostics.Trace(ouILoggerdans .NET Core), tels que App Insights.
Contenu connexe
Dans ce tutoriel, vous avez appris à utiliser le Snapshot Debugger pour les machines virtuelles Azure et les Azure Virtual Machine Scale Sets. Vous souhaiterez peut-être en savoir plus sur cette fonctionnalité.