Résolution des problèmes et problèmes connus liés au débogage instantané 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 le débogueur de capture instantanée dans Visual Studio.

Si les étapes décrites dans cet article ne résolvent pas votre problème, recherchez le problème sur Developer Community ou signalez un nouveau problème en choisissant Envoyer>des commentaires>Signaler un problème dans Visual Studio.

Problème : « Attacher le débogueur d’instantané » rencontre une erreur de code HTTP status

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.

Procédez comme suit :

  • Assurez-vous que votre compte de personnalisation Visual Studio dispose d’autorisations sur l’abonnement Et la ressource Azure auxquels vous attachez. Un moyen rapide de le déterminer consiste à case activée si la ressource est disponible dans la boîte de dialogue à partir du débogueur Debug>Attach Snapshot...>Ressource> AzureSélectionnez Existant 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/autorisation (EasyAuth) sur votre App Service, vous pouvez rencontrer une erreur 401 avec LaunchAgentAsync dans le message d’erreur de la pile des appels. Vérifiez que l’action à effectuer lorsque la demande 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 efficacement votre domaine d’application, comme se connecter avec [IdentityProvider] . La deuxième route expose le point de terminaison SnapshotDebugger AgentLaunch en dehors de l’authentification, qui effectue l’action prédéfinie de démarrage de l’agent de diagnostic SnapshotDebugger uniquement si l’extension de site préinstallée SnapshotDebugger est activée pour votre service d’application. Pour plus d’informations sur la configuration authorization.json , consultez 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 provoquer cette erreur.

Procédez comme suit :

  • Vérifiez que votre compte Visual Studio dispose d’un abonnement Azure valide avec les autorisations Role-Based Access Control (RBAC) nécessaires pour la ressource. Pour AppService, case activée si 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 les horodatages sont désactivés à plus de 15 minutes de l’horodatage de la demande génèrent 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 est introuvable sur le serveur.

Procédez comme suit :

  • Vérifiez qu’un site web est déployé et exécuté sur la ressource App Service à laquelle vous attachez.
  • Vérifiez que le site est disponible à l’adresse https://< resource.azurewebsites.net>
  • Vérifiez que votre application web personnalisée qui s’exécute correctement ne retourne pas de code status 404 lorsqu’elle< est accessible à l’adresse 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 Accept de la demande.

Procédez comme suit :

  • Vérifiez que votre site est disponible à l’adresse https://< resource.azurewebsites.net>.
  • Vérifiez que votre site n’a pas été migré vers de nouvelles instances. Le débogueur de capture instantanée utilise la notion d’ARRAffinity pour router les 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 requête est en conflit avec l’état actuel du serveur.

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

Nous avons résolu ce problème dans Visual Studio 2019.

Procédez comme suit :

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

(500) Erreur interne du serveur

L’erreur 500 - Erreur interne du serveur 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 fonctionne uniquement sur les applications en cours d’exécution. Le débogueur de capture instantanée Application Insights fournit des captures instantanées sur les exceptions et peut être le meilleur outil pour 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.

Procédez comme suit :

  • Essayez d’attendre quelques minutes avant de joindre à 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’ancrage n’est pas activé

Si vous voyez une icône d’avertissement avec votre point d’ancrage 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 ne s’active pas.

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 tente de télécharger et d’utiliser automatiquement des symboles pour 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 se chargent pas.

Procédez comme suit :

  • Sélectionnez Modifier les paramètres de symbole... dans la page.

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

  • Redémarrez instantané débogage une fois que le chemin du symbole a été 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. La définition du répertoire du cache de symboles permet à Visual Studio d’utiliser ces symboles.

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

  • Si votre organization utilise un serveur de symboles ou supprime des symboles dans un autre chemin, utilisez les paramètres de symbole pour charger les symboles appropriés pour votre déploiement.

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

Procédez comme suit :

  • Vérifiez que le composant Débogueur de capture instantanée est installé. Ouvrez le Visual Studio Installer et case activée le composant Débogueur d’instantané 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 Services : ASP.NET applications s’exécutant sur .NET Framework 4.6.1 ou version ultérieure.
    • Azure App Services : ASP.NET Core applications s’exécutant sur .NET Core 2.0 ou version ultérieure sur Windows.
    • Azure Machines Virtuelles (et groupe de machines virtuelles identiques) : ASP.NET applications s’exécutant sur .NET Framework 4.6.1 ou version ultérieure.
    • Azure Machines Virtuelles (et groupe de machines virtuelles identiques) : ASP.NET Core applications s’exécutant sur .NET Core 2.0 ou version ultérieure sur Windows.
    • Azure Kubernetes Services : ASP.NET Core applications s’exécutant sur .NET Core 2.2 ou version ultérieure sur Debian 9.
    • Azure Kubernetes Services : ASP.NET Core applications s’exécutant sur .NET Core 2.2 ou version ultérieure sur Alpine 3.8.
    • Azure Kubernetes Services : ASP.NET Core applications s’exécutant sur .NET Core 2.2 ou version ultérieure sur Ubuntu 18.04.

Problème : Je vois uniquement les instantanés limités dans les outils de diagnostic

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

Procédez comme suit :

  • Les instantanés occupent peu de mémoire, mais ont des frais de validation. Si le débogueur de capture instantanée détecte que votre serveur est soumis à une charge de mémoire importante, il ne prend pas d’instantanés. Vous pouvez supprimer les captures instantanées déjà capturées en arrêtant la session du débogueur de capture instantanée et en réessayant.

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 nécessite une version plus récente de l’extension de site Débogueur d’instantané sur votre Azure App Service. Cette version n’est pas compatible avec l’ancienne version de l’extension de site Débogueur de capture instantanée utilisée par Visual Studio 2017. Vous obtiendrez l’erreur suivante si vous essayez d’attacher le débogueur d’instantané dans Visual Studio 2019 à un 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 débogueur d’instantané incompatible Visual Studio 2019.

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

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

Pour résoudre ce problème, supprimez les paramètres d’application suivants dans le Portail Azure et attachez à nouveau le débogueur d’instantané :

  • INSTRUMENTATIONENGINE_EXTENSION_VERSION
  • SNAPSHOTDEBUGGER_EXTENSION_VERSION

Problème : J’attache un compte de stockage ou de ressource Azure incorrect/ancien

Procédez comme suit :

Les entrées « Ressource Azure » et « Compte de stockage » utilisent des noms de ressource comme clés afin que des actions telles que la migration d’une ressource vers différents abonnements puissent 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é 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 à Outils>Options>Instantané Débogueur>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 aux emplacements suivants :

  • App Services :
    • Accédez au site Kudu de votre App Service (autrement dit, <votreappservice>).scm.azurewebsites.net) et accédez à Console de débogage.
    • Les journaux de l’agent sont stockés dans le répertoire suivant : D :\home\LogFiles\SiteExtensions\DiagnosticsAgentLogs\.
  • Machine virtuelle/VMSS :
    • Connectez-vous à votre machine virtuelle, les journaux 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 aux 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 »
  • Machine virtuelle/VMSS :
    • Connectez-vous à votre machine virtuelle et ouvrez observateur d'événements.
    • Ouvrez la vue suivante : Application journaux>Windows.
    • Filtrez le journal actuel par source d’événement à l’aide des points d’arrêt de production ou du moteur d’instrumentation.
  • AKS
    • Journalisation du moteur d’instrumentation sur /tmp/diag/log.txt (définie MicrosoftInstrumentationEngine_FileLogPath dans DockerFile)
    • Journalisation productionBreakpoint sur /tmp/diag/shLog.txt

Problèmes connus

  • Le débogage d’instantané avec plusieurs clients Visual Studio sur le même App Service n’est pas pris en charge actuellement.
  • Les optimisations roslyn IL ne sont pas entièrement prises en charge dans les projets ASP.NET Core. Pour certains projets ASP.NET Core, il se peut que vous ne puissiez pas voir certaines variables ou utiliser certaines variables 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 ASP.NET Core projets.
  • Le débogage d’instantané ne fonctionne pas sur App Services pour lesquels la mise en cache locale est activée.
  • Le débogage d’instantané api apps n’est pas pris en charge actuellement.

Mise à niveau de l’extension de site

Le débogage d’instantané et Application Insights dépendent d’un ICorProfiler, qui se charge dans le processus de site et provoque des problèmes de verrouillage de fichier pendant la mise à niveau. Nous vous recommandons ce processus 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 App Service et déployez votre site sur l’emplacement.
  • Échangez l’emplacement avec la production à partir du cloud Explorer dans Visual Studio ou à partir du Portail Azure.
  • Arrêtez le site d’emplacement. Il faut quelques secondes pour arrêter le processus w3wp.exe site de toutes les instances.
  • Mettez à niveau l’extension de site d’emplacement à partir du site Kudu ou de l’Portail Azure (App Service blade > Development Tools > Extensions > Update).
  • Démarrez le site d’emplacement. Nous vous recommandons de visiter le site pour le réchauffer à nouveau.
  • Échangez l’emplacement avec la production.

References