Partager via


Résolution des problèmes et problèmes connus du débogage de capture instantanée dans Visual Studio.

S’applique à : Visual Studio

Cet article fournit des solutions aux problèmes courants que vous pouvez rencontrer lorsque vous déboguez une application Azure avec débogueur d’instantané dans Visual Studio.

Si les étapes décrites dans cet article ne résolvent pas votre problème, recherchez le problème dans la Communauté des développeurs ou signalez un nouveau problème en choisissant Aide pour>envoyer des commentaires>signaler un problème dans Visual Studio.

Problème : Erreur de code d’état HTTP pour « Attacher le Débogueur de capture instantanée »

Si vous voyez l’erreur suivante dans la fenêtre Sortie pendant la tentative d’attachement, il peut s’agir d’un problème connu répertorié dans les sections suivantes. Essayez les solutions proposées et, si le problème persiste, contactez l’alias précédent.

[TIMESTAMP] Error --- Unable to Start Snapshot Debugger - Attach Snapshot Debugger failed: System.Net.WebException: The remote server returned an error: (###) XXXXXX

(401) Non autorisé

Cette erreur indique que l’appel REST émis par Visual Studio à Azure utilise des informations d’identification non valides.

Suivez ces étapes :

  • Assurez-vous que votre compte de personnalisation Visual Studio dispose des autorisations d’accès à l’abonnement Et à la ressource Azure auxquels vous vous attachez. Un moyen rapide de déterminer cela consiste à vérifier si la ressource est disponible dans la boîte de dialogue en choisissant Déboguer>Attacher le Débogueur de capture instantanée…>Ressource Azure>Sélectionnez existante ou dans Cloud Explorer.
  • Si cette erreur persiste, utilisez l’un des canaux de commentaires décrits au début de cet article.

Si vous avez activé l’authentification et l’autorisation (EasyAuth) sur votre instance App Service, vous pouvez rencontrer une erreur 401 avec LaunchAgentAsync dans le message d’erreur de la pile d’appels. Vérifiez que l’action à entreprendre lorsque la requête n’est pas authentifiée est définie sur Autoriser les demandes anonymes (aucune action) dans le Portail Azure et fournissez un authorization.json dans D :\Home\sites\wwwroot avec le contenu suivant à la place.

{
  "routes": [
    {
      "path_prefix": "/",
      "policies": {
        "unauthenticated_action": "RedirectToLoginPage"
      }
    },
    {
      "http_methods": [ "POST" ],
      "path_prefix": "/41C07CED-2E08-4609-9D9F-882468261608/api/agent",
      "policies": {
        "unauthenticated_action": "AllowAnonymous"
      }
    }
  ]
}

La première route sécurise concrètement votre domaine d’application, tout comme Se connecter avec [Fournisseur d’identité]. La deuxième expose le point de terminaison SnapshotDebugger AgentLaunch en dehors de l’authentification. Ce point de terminaison effectue l’action prédéfinie de démarrage de l’agent de diagnostic SnapshotDebugger si et seulement si l’extension de site préinstallée SnapshotDebugger est activée pour le service d’application. Pour plus d’informations sur la configuration authorization.json , consultez les règles d’autorisation d’URL.

(403) Interdit

L’erreur 403 - Interdit indique que l’autorisation est refusée. De nombreux scénarios différents peuvent entraîner cette erreur.

Suivez ces étapes :

  • Vérifiez que votre compte Visual Studio dispose d’un abonnement Azure valide et doté des autorisations de contrôle d'accès en fonction du rôle (RBAC) nécessaires pour la ressource. En ce qui concerne AppService, assurez-vous que vous disposez des autorisations nécessaires pour interroger le plan App Service hébergeant votre application.
  • Vérifiez que l’horodatage de votre ordinateur client est correct et à jour. Les serveurs dont l’horodatage est décalé de plus de 15 minutes par rapport à celui de la demande produisent généralement cette erreur.
  • Si cette erreur persiste, utilisez l’un des canaux de commentaires décrits au début de cet article.

(404) Introuvable

L’erreur 404 - Introuvable indique que le site web n’a pas pu être trouvé sur le serveur.

Suivez ces étapes :

  • Vérifiez qu’un site web est déployé et en cours d’exécution sur la ressource App Service à laquelle vous attachez le Débogueur.
  • Vérifiez que le site est disponible sur https://< resource.azurewebsites.net>
  • Vérifiez que votre application web personnalisée correctement exécutée ne retourne pas de code d’état 404 lorsqu’elle est accessible à https://< resource.azurewebsites.net>.
  • Si cette erreur persiste, utilisez l’un des canaux de commentaires décrits au début de cet article.

(406) Non acceptable

L’erreur 406 - Non acceptable indique que le serveur ne peut pas répondre au type défini dans l’en-tête Accepter de la demande.

Procédez comme suit :

  • Vérifiez que votre site est disponible sur https:// resource.azurewebsites.net><.
  • Vérifiez que votre site n’a pas été migré vers de nouvelles instances. Le débogueur d’instantané utilise la notion d’ARRAffinity pour le routage des demandes vers des instances spécifiques qui peuvent produire cette erreur par intermittence.
  • Si cette erreur persiste, utilisez l’un des canaux de commentaires décrits au début de cet article.

(409) Conflit

L’erreur 409 - Conflit indique que la demande est en conflit avec l’état actuel du serveur.

Il s’agit d’un problème connu qui se produit lorsque l’utilisateur tente d’attacher un Débogueur de capture instantanée à un AppService qui a activé ApplicationInsights. ApplicationInsights définit AppSettings avec une casse différente de celle de Visual Studio, ce qui provoque ce problème.

Nous avons résolu cela dans Visual Studio 2019.

Suivez ces étapes :

  • Si cette erreur persiste, utilisez l’un des canaux de commentaires décrits au début de cet article.

(500) Erreur de serveur interne

L’erreur 500 - Erreur de serveur interne indique que le site est arrêté ou que le serveur ne peut pas gérer la requête. Le Débogueur de capture instantanée ne fonctionne que sur les applications en cours d’exécution. Le Débogueur de capture instantanée Application Insights, qui fournit des captures instantanées des exceptions, peut représenter le meilleur outil par rapport à vos besoins.

(502) Passerelle incorrecte

L’erreur 502 - Passerelle incorrecte indique un problème de mise en réseau côté serveur et peut être temporaire.

Suivez ces étapes :

  • Essayez d’attendre quelques minutes avant d’attacher à nouveau le Débogueur de capture instantanée.
  • Si cette erreur persiste, utilisez l’un des canaux de commentaires décrits au début de cet article.

Problème : Le point d’alignement n’est pas activé

Si vous voyez une icône d’avertissement avec votre point d’alignement au lieu de l’icône de point d’ancrage standard, le point d’ancrage n’est pas activé.

Capture d’écran montrant que Snappoint n’est pas activé.

Procédez comme suit :

  • Veillez à utiliser la même version du code source pour générer et déployer votre application.
  • Vérifiez que vous chargez les symboles appropriés pour votre déploiement.
  • Pour ce faire, affichez la fenêtre Modules pendant le débogage d’instantané et vérifiez que la colonne Fichier de symboles affiche un fichier .pdb chargé pour le module que vous déboguez.
    • Le Débogueur de capture instantanée tentera de télécharger et d’utiliser automatiquement les symboles de votre déploiement.

Problème : les symboles ne se chargent pas lorsque j’ouvre un instantané

Si vous voyez la fenêtre suivante, les symboles n’ont pas été chargés.

Capture d’écran montrant que les symboles ne sont pas chargés.

Procédez comme suit :

  • Sélectionnez Modifier les paramètres des symboles... dans la page.

  • Dans les paramètres Débogage > Symbole, ajoutez un répertoire de cache de symboles.

  • Relancez le débogage de capture instantanée une fois le chemin des symboles défini.

    Les symboles ou fichiers .pdb disponibles dans votre projet doivent correspondre à votre déploiement App Service. La plupart des déploiements (déploiement via Visual Studio, CI/CD avec Azure Pipelines ou Kudu, etc.) publient vos fichiers de symboles sur votre App Service. Le fait de définir le répertoire de cache de symboles permet à Visual Studio d’utiliser ces symboles.

    Capture d’écran montrant les paramètres des symboles.

  • Si, en revanche, votre organisation utilise un serveur de symboles ou place les symboles dans un autre chemin, utilisez les paramètres des symboles pour charger les symboles adaptés à votre déploiement.

Problème : je ne vois pas l’option « Attacher le débogueur d’instantané » dans Cloud Explorer

Suivez ces étapes :

  • Vérifiez que le composant Débogueur de capture instantanée est installé. Ouvrez Visual Studio Installer et cochez le composant Débogueur de capture instantanée dans la charge de travail Azure.

  • Pour Visual Studio 2019 ou versions ultérieures, vérifiez que votre application est prise en charge :

    • Azure App Service – Applications ASP.NET exécutées sur .NET Framework 4.6.1 (ou une version ultérieure).
    • Azure App Service – Applications ASP.NET Core exécutées sur .NET Core 2.0 (ou une version ultérieure) sur Windows.
    • Machines virtuelles Azure (et groupe de machines virtuelles identiques) – Applications ASP.NET exécutées sur .NET Framework 4.6.1 (ou une version ultérieure).
    • Machines virtuelles Azure (et groupe de machines virtuelles identiques) – Applications ASP.NET Core exécutées sur .NET Core 2.0 (ou une version ultérieure) sur Windows.
    • Azure Kubernetes Services – Applications ASP.NET Core exécutées sur .NET Core 2.2 (ou une version ultérieure) sur Debian 9.
    • Azure Kubernetes Services – Applications ASP.NET Core exécutées sur .NET Core 2.2 (ou une version ultérieure) sur Alpine 3.8.
    • Azure Kubernetes Services – Applications ASP.NET Core exécutées sur .NET Core 2.2 (ou une version ultérieure) sur Ubuntu 18.04.

Problème : Seules des captures instantanées limitées apparaissent dans les Outils de diagnostic

Capture d’écran montrant le point d’ancrage limité.

Suivez ces étapes :

  • Les captures instantanées occupent peu de mémoire, mais présentent un coût de validation. Si le Débogueur de capture instantanée détecte que votre serveur subit une lourde charge de mémoire, il ne prend pas de captures instantanées. Pour supprimer des captures instantanées déjà prises, arrêtez la session du Débogueur de capture instantanée, puis réessayez.

Problème : le débogage d’instantané avec plusieurs versions de Visual Studio me donne des erreurs (Visual Studio 2019 ou versions ultérieures)

Visual Studio 2019 exige une version plus récente de l’extension de site Débogueur de capture instantanée sur le service Azure App Service. Cette version n’est pas compatible avec l’ancienne version de l’extension de site débogueur d’instantané utilisée par Visual Studio 2017. Vous obtenez l’erreur suivante si vous essayez d’attacher le débogueur d’instantané dans Visual Studio 2019 à un service Azure App Service précédemment débogué par le débogueur d’instantané dans Visual Studio 2017 :

Capture d’écran de l’extension de site du débogueur d’instantané incompatible Visual Studio 2019.

À l’inverse, si vous utilisez Visual Studio 2017 pour attacher le débogueur d’instantané à un service Azure App Service précédemment débogué par le débogueur d’instantané dans Visual Studio 2019, vous obtenez l’erreur suivante :

Capture d’écran de l’extension de site du débogueur d’instantané incompatible Visual Studio 2017.

Pour résoudre ce problème, supprimez les paramètres d’application suivants sur le Portail Azure et joignez à nouveau le Débogueur de capture instantanée :

  • INSTRUMENTATIONENGINE_EXTENSION_VERSION
  • SNAPSHOTDEBUGGER_EXTENSION_VERSION

Problème : je m’attache au compte de stockage ou de ressource Azure incorrect/ancien

Suivez ces étapes :

Les entrées « Ressource Azure » et « Compte de stockage » utilisent des noms de ressources comme clés. Des actions telles que la migration d’une ressource vers d’autres abonnements peuvent donc entraîner des problèmes. Pour effacer la liste, procédez comme suit :

  1. Exécutez ces commandes dans l’invite de commandes Développeur pour VS (avec des privilèges d’administrateur).

    vsregedit remove local HKCU SnapshotDebugger AzureResourcesMRU
    vsregedit remove local HKCU SnapshotDebugger StorageAccountsMRU
    
  2. Supprimez tous les fichiers .suo associés à l’application web.

Problème : je rencontre des problèmes de débogage d’instantanés et j’ai besoin d’activer davantage de journalisation

Activer les journaux d’activité de l’agent

Pour activer et désactiver la journalisation de l’agent, ouvrez Visual Studio et accédez au débogueur>d’instantané Options>outils>Activer la journalisation de l’agent. Notez que si l’option Supprimer les anciens journaux d’activité de l’agent au démarrage de session est également activée, chaque attachement Visual Studio réussi supprime les journaux d’activité de l’agent précédents.

Vous trouverez les journaux d’activité de l’agent dans les emplacements suivants :

  • App Services :
    • Accédez au site Kudu de votre App Service (autrement dit, <votre applicationservice>).scm.azurewebsites.net) et accédez à La console de débogage.
    • Les journaux d’activité de l’agent sont stockés dans le répertoire suivant : D :\home\LogFiles\SiteExtensions\DiagnosticsAgentLogs\.
  • VM/VMSS :
    • Connectez-vous à votre machine virtuelle, les journaux d’activité de l’agent sont stockés comme suit : C :\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<Version>\SnapshotDebuggerAgent*.txt_
  • AKS
    • Accédez au répertoire suivant : /tmp/diag/AgentLogs/*

Activer les journaux Profiler/Instrumentation

Vous trouverez les journaux d’instrumentation dans les emplacements suivants :

  • App Services :
    • La journalisation des erreurs est automatiquement envoyée à D :\Home\LogFiles\eventlog.xml, les événements sont marqués avec <Provider Name="Instrumentation Engine" /> ou « Points d’arrêt de production »
  • VM/VMSS :
    • Connectez-vous à votre machine virtuelle et ouvrez l’observateur d’événements.
    • Ouvrez la vue Journaux Windows > Application.
    • Filtrez le journal actuel par Source de l’événement avec des Points d’arrêt de production ou le Moteur d’instrumentation.
  • AKS
    • Journalisation du moteur d’instrumentation à /tmp/diag/log.txt (définie MicrosoftInstrumentationEngine_FileLogPath dans DockerFile)
    • Journalisation ProductionBreakpoint à /tmp/diag/shLog.txt

Problèmes connus

  • Le débogage d’instantanés avec plusieurs clients Visual Studio sur le même App Service n’est actuellement pas pris en charge.
  • Les optimisations il Roslyn ne sont pas entièrement prises en charge dans les projets ASP.NET Core. Dans certains projets ASP.NET Core, certaines variables ne s’affichent pas ou ne sont pas utilisables dans des instructions conditionnelles.
  • Les variables spéciales, telles que $FUNCTION ou $CALLER, ne peuvent pas être évaluées dans des instructions conditionnelles ou des points de journal pour les projets ASP.NET Core.
  • Le débogage d’instantanés ne fonctionne pas sur App Services sur lequel la mise en cache locale est activée.
  • Actuellement, les applications API de débogage d’instantanés ne sont pas prises en charge.

Mise à niveau de l’extension de site

Le débogage de capture instantanée et Application Insights dépendent d’un ICorProfiler, qui se charge dans le processus du site et provoque des problèmes de verrouillage de fichier pendant la mise à niveau. Nous vous recommandons de procéder pour vous assurer qu’il n’y a pas de temps d’arrêt sur votre site de production.

  • Créez un Emplacement de déploiement dans votre service App Service et déployez-y votre site.
  • Basculez de cet emplacement vers l’emplacement de production dans Cloud Explorer dans Visual Studio ou sur le Portail Azure.
  • Arrêtez le site de l’emplacement de déploiement. La destruction du site w3wp.exe processus de toutes les instances prend quelques secondes.
  • Mettez à niveau l’extension de site de l’emplacement sur le site Kudu ou le Portail Azure (Panneau App Service > Outils de développement > Extensions > Mettre à jour).
  • Lancez le site de l’emplacement de déploiement. Nous vous recommandons de visiter le site pour l’activer à nouveau.
  • Basculez de l’emplacement de production vers l’emplacement de déploiement.

References