Partager via


Déboguer en temps réel ASP.NET Azure Kubernetes Service à l’aide du débogueur instantané

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 Snapshot Debugger pour Azure Kubernetes Services 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 Kubernetes Services suivantes :

    • ASP.NET Applications Core s’exécutant sur .NET Core 2.2 ou version ultérieure sur Debian 9.

    • ASP.NET applications Core s’exécutant sur .NET Core 2.2 ou version ultérieure sur Alpine 3.8.

    • ASP.NET applications Core s’exécutant sur .NET Core 2.2 ou version ultérieure sur Ubuntu 18.04.

      Remarque

      Pour vous aider à activer la prise en charge du débogueur d’instantanés dans AKS, nous avons fourni un dépôt contenant un ensemble de Dockerfiles démontrant leur configuration sur les images Docker.

Ouvrez votre projet et démarrez le débogueur d’instantané

  1. 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 Kubernetes.

  2. Choisissez >. Sélectionnez la ressource AKS sur laquelle votre application web est déployée et un compte de stockage Azure, puis cliquez sur Attacher. Le débogueur de capture instantanée prend également en charge Azure App Service et les machines virtuelles Azure (VM) et les ensembles de machines virtuelles.

    Ouvrir le débogueur d'instantané depuis le menu Débogage

    Sélectionner une ressource Azure

    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.

Visual Studio est désormais en mode de débogage instantané.

Mode de débogage d’instantané

La fenêtre Modules vous montre quand tous les modules ont été chargés pour Azure App Service (choisissez Déboguer > les modules Windows > pour ouvrir cette fenêtre).

Vérifier la fenêtre Modules

Définir un point d’ancrage

  1. 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.

    Définir un point d’ancrage

  2. Cliquez sur Démarrer la collection pour activer le point d’ancrage.

    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

  1. 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.

    Ouvrir un point d’ancrage

  2. Double-cliquez sur le point d’ancrage pour ouvrir l’instantané dans l’éditeur de code.

    Inspecter les données de capture d'écran

    À 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

  1. Cliquez avec le bouton droit sur une icône de point d’ancrage (la sphère creuse) et choisissez Paramètres.

    Choisir les paramètres

  2. Dans la fenêtre paramètres du point d’ancrage, tapez une expression.

    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

  1. Cliquez avec le bouton droit sur une icône de point d’ancrage (l’hexagone bleu) et choisissez Paramètres.

  2. Dans la fenêtre paramètres du point d’ancrage, sélectionnez Actions.

    Créer un point de journalisation

  3. 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.

    Données de point de journalisation 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 (ou ILogger dans .NET Core), tels que App Insights.

Dans ce tutoriel, vous avez appris à utiliser le débogueur d’instantané d'Azure Kubernetes. Vous souhaiterez peut-être en savoir plus sur cette fonctionnalité.