Déboguer à distance du code Python sur AzureRemotely debug Python code on Azure

Prise en charge de Python dans Visual Studio permet de déboguer à distance le code Python qui s’exécute sur Azure App Service.Python support in Visual Studio includes the ability to remotely debug Python code that's running on Azure App Service. Contrairement à un débogage à distance simple, l’ordinateur cible dans ce scénario n’est pas directement accessible par le biais de TCP. Visual Studio fournit donc un proxy qui expose le protocole de débogueur sur HTTP.Unlike simple remote debugging, the target computer in this scenario is not directly accessible over TCP, so Visual Studio provides a proxy that exposes the debugger protocol over HTTP. Les projets créés à l’aide du modèle web configurent automatiquement ce proxy dans le fichier web.debug.config généré.Projects created using the Web template automatically configure this proxy in the generated web.debug.config file. Le débogage à distance est également activé quand vous publiez une configuration Debug de votre projet, comme décrit à la section Publier sur Azure App Service.Remote debugging is also enabled when you publish a Debug configuration of your project as described on Publish to Azure App Service.

Étant donné que le débogage à distance Azure utilise des sockets web, vous devez activer les sockets pour votre App Service par le biais du portail Azure en accédant à Paramètres > Paramètres de l’application, en définissant l’option Paramètres généraux > Web sockets sur Activer, puis en sélectionnant Enregistrer pour appliquer la modification.Because Azure remote debugging uses web sockets, sockets must be enabled for your App Service through the Azure portal by going to Settings > Application settings and turning General settings > Web sockets to On, then selecting Save to apply the change. (Notez que les paramètres Débogage ne s’appliquent pas au débogage de Python.)(Note that the Debugging settings do not apply to debugging Python.)

Activation de sockets web dans le Portail Azure

Attacher avec l’Explorateur de serveursAttach with Server Explorer

Une fois que votre projet est correctement déployé et que les sockets web sont activés, vous pouvez effectuer l’attachement à App Service à partir de l’Explorateur de serveurs dans Visual Studio (Affichage > Explorateur de serveurs).Once your project is properly deployed and web sockets enabled, you can attach to the App Service from Server Explorer in Visual Studio (View > Server Explorer). Recherchez votre site sous Azure > App Service et le groupe de ressources applicable, cliquez avec le bouton droit, puis sélectionnez Attacher le débogueur (Python).Locate your site under Azure > App Service and the applicable resources group, right-click, and select Attach Debugger (Python). (La commande Attacher le débogueur concerne les applications .NET s’exécutant sous IIS et n’est utile que si vous co-hébergez un code .NET en même temps que votre application Python.)(The Attach Debugger command is for .NET applications running under IIS, and is useful only if you co-host .NET code alongside your Python app.)

Visual Studio peut vous diriger directement vers un ensemble d’instructions permettant d’effectuer un attachement direct, comme décrit ci-dessous à la section Attacher sans l’Explorateur de serveurs.Visual Studio may take you directly to a set of instructions for attaching directly, as described below in Attach without Server Explorer. Si la commande Attacher le débogueur (Python) n’apparaît pas ou que Visual Studio ne parvient pas à s’attacher à votre site, consultez Résolution des problèmes de débogage à distance pour Python et Azure.If you do not see the Attach Debugger (Python) command or Visual Studio fails to attach to your site, see Remote debugging troubleshooter for Python and Azure.

Si l’attachement réussit, Visual Studio bascule vers une vue du débogueur.If the attach is successful, Visual Studio switches to a debugger view. La barre d’outils indique le processus en cours de débogage tel qu’un URI wss:// :The toolbar indicates the process being debugged such as a wss:// URI:

Débogage d’un site web Azure App Service

Une fois l’attachement effectué, l’expérience de débogage est globalement identique à celle du débogage à distance standard soumis à quelques contraintes.Once attached, the debugging experience is mostly the same as for regular remote debugging subject to a few constraints. En particulier, le serveur web IIS qui gère les demandes entrantes et les délègue au code Python par le biais de FastCGI présente un délai d’expiration de 90 secondes par défaut pour le traitement des demandes.In particular, the IIS web server that handles incoming requests and delegates them to Python code via FastCGI has a timeout for request handling, which defaults to 90 seconds. Si le traitement d’une demande dépasse ce délai (par exemple, en raison de la suspension du processus au niveau d’un point d’arrêt), IIS termine le processus, ce qui met fin à votre session de débogage.If request handling takes longer than that timeout (for example, because of the process being paused at a breakpoint), IIS terminates the process, ending your debugging session.

Attacher sans l’Explorateur de serveursAttach without Server Explorer

Pour attacher le débogueur directement à App Service, suivez les instructions fournies dans la page d’informations du proxy WebSocket que Visual Studio déploie sur votre site à l’adresse <url_site>/ptvsd, par exemple ptvsdemo.azurewebsites.net/ptvsd.To attach the debugger directly to App Service, follow the instructions given on the WebSocket proxy info page that Visual Studio deploys to your site at <site_url>/ptvsd such as ptvsdemo.azurewebsites.net/ptvsd. La consultation de cette page vous permet également de vérifier que le proxy est correctement configuré :Visiting this page also verifies that the proxy is correctly configured:

Page d’informations du proxy de débogage à distance Azure

Comme indiqué, construisez une URL avec le secret de web.debug.config, qui est regénéré chaque fois que votre projet est publié.As instructed, construct a URL using the secret from web.debug.config, which is regenerated every time your project is published. Ce fichier est masqué par défaut dans l’Explorateur de solutions et ne figure pas dans votre projet. Vous devez donc afficher tous les fichiers ou ouvrir ce fichier dans un éditeur distinct.This file is hidden by default in Solution Explorer and not included in your project, so show all files or open it in a separate editor. Après avoir ouvert le fichier, examinez la valeur de l’élément appSetting nommé WSGI_PTVSD_SECRET :Once you've opened the file, look at the value of the appSetting named WSGI_PTVSD_SECRET:

Détermination du point de terminaison du débogueur dans un Azure App Service

L’URL dont vous avez maintenant besoin se présente sous la forme wss://<secret>@<site_name>.azurewebsites.net/ptvsd, où vous devez remplacer <secret> et <site_name> par vos propres valeurs.The URL you now need is in the form wss://<secret>@<site_name>.azurewebsites.net/ptvsd where you replace <secret> and <site_name> in the string with your specific values.

Pour attacher le débogueur, sélectionnez Débogage > Attacher au processus, sélectionnez Python remote debugging (Débogage à distance Python) dans la zone déroulante Transport, entrez l’URL dans la zone de texte Qualificateur, puis appuyez sur Entrée.To attach the debugger, select Debug > Attach to Process, select Python remote debugging in the Transport dropdown, enter the URL into the Qualifier textbox, and press Enter. Si Visual Studio parvient à se connecter à App Service, il affiche un seul processus Python dans la liste.If Visual Studio can successfully connect to App Service, it shows a single Python process in the list. Sélectionnez-le, puis sélectionnez Attacher pour commencer le débogage :Select it and then Attach to start debugging:

Utilisation de la boîte de dialogue Attacher au processus pour l’attachement à un site web Azure