Déboguer un service en cours d'exécution localement dans Cloud Code for IntelliJ

Cloud Code vous permet de déboguer vos services Cloud Run localement dans un environnement de type Cloud Run. Vous pouvez définir des points d'arrêt, parcourir votre code et déboguer les services distantes exécutées dans des conteneurs.

Cloud Code vous permet également de déboguer une application tout en apportant des modifications au code source et en itérant vers celui-ci.

Définir la configuration de débogage

Avant de déboguer votre service, vous devez créer votre configuration de débogage :

  1. Accédez au sélecteur de configuration Run/Debug (Exécution/Débogage) dans la barre de navigation, puis cliquez sur Edit Configurations (Modifier les configurations).
  2. Sélectionnez Cloud Run: Run Locally (Cloud Run : Exécuter localement) sous Cloud Code: Cloud Run.
  3. Cliquez sur OK.

Déboguer votre service

Pour déboguer votre service, procédez comme suit :

  1. Cliquez sur icône d'action de débogage Debug (Débogage) pour Cloud Run: Run Locally (Exécuter en local : Exécuter en local) pour démarrer le cycle de développement en mode débogage.

    Cliquer sur "Cloud Run: Run Locally" (Cloud Run : Exécuter localement) en mode de débogage

  2. Cloud Code rattache alors une session de débogage. Une fois l'opération réussie, la fenêtre "Debug Tool" (Outil de débogage) s'ouvre, confirmant la connexion (dans l'onglet "Console").

  3. Cliquez sur la marge de la ligne exécutable du code auquel vous souhaitez ajouter un point d'arrêt.

    Les cercles pleins rouges indiquent les points d'arrêt actifs, tandis que les cercles vides rouges indiquent les points d'arrêt désactivés.

  4. Pour accéder à votre service en cours d'exécution, cliquez sur l'URL affichée dans le panneau "Event Log" (Journal des événements).

    Lorsque vous effectuez cette opération, une nouvelle requête est envoyée à votre service et celui-ci se met en pause à la ligne marquée par le point d'arrêt.

    Journal des événements avec notification de déploiement réussi et URL pour prévisualiser votre service

  5. Pour mettre fin à la session de débogage, cliquez sur l'icône d'arrêt de la configuration d'exécution "Cloud Run: Run Locally" (Cloud Run : Exécuter localement).

IDE compatibles

Le tableau suivant répertorie les langages et les IDE compatibles avec Cloud Code pour le débogage. Le tableau répertorie également les plug-ins requis, le cas échéant:

Langue IDE et éditions compatibles Plug-in requis
Java IntelliJ IDEA Ultimate N/A
Communauté IntelliJ IDEA N/A
Go IntelliJ IDEA Ultimate Plug-in Go
GoLand N/A
Node.js IntelliJ IDEA Ultimate Plug-in Node.js
WebStorm N/A
Python IntelliJ IDEA Ultimate Plug-in Python
PyCharm Professional N/A

Pour en savoir plus sur la compatibilité avec les IDE, consultez la page IDE JetBrains compatibles.

Avec Cloud Code, vous pouvez définir des points d'arrêt et déboguer les applications distantes exécutées dans des conteneurs pour les langages suivants :

Java

Cloud Code ajoute automatiquement une variable d'environnement, JAVA_TOOL_OPTIONS, avec la configuration JDWP appropriée pour permettre le débogage. Si JAVA_TOOL_OPTIONS est déjà présent, Cloud Code utilise les paramètres existants spécifiés dans JAVA_TOOL_OPTIONS.

Node.js

Selon la structure de votre application et sa configuration de compilation d'images, vous devrez peut-être aider le débogueur à mapper vos sources locales avec les sources distantes du conteneur. Cela permet au débogueur de nœud de traiter correctement vos points d'arrêt.

Pour ce faire, procédez de l'une des façons suivantes :

  • Configuration manuelle

    Sélectionnez la configuration d'exécution Cloud Run: Run Locally (Cloud Run : Exécuter localement) dans la liste déroulante, puis cliquez sur Edit Configurations (Modifier les configurations). Dans l'onglet Debug (Débogage), configurez le mappage de source de votre source d'application locale avec l'emplacement source dans le conteneur distant.

    Choisir un emplacement source dans la section du mappage de source de l'onglet "Debug" (Débogage)

    Options de configuration :

    • File/Directory (Fichier/Répertoire) : fichier ou répertoire local de votre application s'exécutant sur Cloud Run.
    • Remote Path (Chemin d'accès à distance) : chemin d'accès au fichier ou au répertoire exécuté dans le conteneur sur Cloud Run.
  • Configuration automatique

    Vous pouvez choisir de déléguer ce mappage à Cloud Code. Lorsque vous démarrez votre session de débogage, Cloud Code tente de déduire automatiquement ce mappage. Le mappage déduit vous sera présenté dans une boîte de dialogue (une boîte de dialogue pour chaque artefact que vous déboguez).

    Boîte de dialogue de mappage de chemin d'accès à distance pour chaque artefact spécifiant le chemin à distance utilisé

    Options de configuration :

    • Local path (Chemin d'accès local) : chemin d'accès local à la racine de l'artefact que vous déboguez.
    • Remote Path (Chemin d'accès à distance) : chemin d'accès au fichier ou au répertoire exécuté dans le conteneur sur Cloud Run. Vous pouvez choisir de remplacer ce paramètre par votre propre valeur. Si vous cliquez sur Annuler, aucun mappage n'est appliqué.

Go

Pour configurer votre application pour le débogage, elle doit être une application à base de Modules Go et être identifiée en tant que telle en définissant l'une des Variables d'environnement d'exécution Go standard dans le conteneur, par exemple GODEBUG, GOGC, GOMAXPROCS ouGOTRACEBACK. GOTRACEBACK=single est le paramètre par défaut pour Go, et GOTRACEBACK=all est une configuration généralement utile.

Si possible (mais recommandé), votre application doit être créée avec les options -gcflags='all=-N -l' pour désactiver les optimisations. Les profils Skaffold sont une option utile à cette fin. Ils peuvent être définis à l'aide du champ Deployment Profile (Profil de déploiement) de votre configuration d'exécution dans l'onglet Build/Deploy (Compilation/Déploiement).

Python

Pour configurer votre application pour le débogage, assurez-vous de remplir les conditions préalables suivantes :

  • IDE, édition et plug-in compatibles

    Pour connaître les IDE, les éditions et les plug-ins compatibles, consultez la section IDE compatibles.

  • Version Skaffold 1.25.0 ou ultérieure

    Vous pouvez autoriser Cloud Code à gérer vos dépendances ou pointer vers une installation Skaffold locale. Consultez la section Préférences > Outils > Cloud Code > Dépendances.

  • L'interpréteur Python est configuré

    Sans interpréteur Python configuré dans votre projet, le débogage ne fonctionne pas car il n'existe aucun moyen d'exécuter pydevd, le débogueur Python sous-jacent.

    IDE Procédure de configuration
    IntelliJ IDEA Le débogage Python avec Cloud Code nécessite la configuration d'un SDK Python pour votre projet.

    Accédez à Fichier > Structure du projet et ajoutez un SDK Python dans l'onglet Projet. S'il n'en existe pas, ajoutez-en un dans l'onglet SDK.
    PyCharm Accédez à Fichier > Paramètres > Projet > Interpréteur Python ou pour macOS X, PyCharm > Préférences > Projet > Interpréteur Python, puis ajoutez un interpréteur Python.

Pour en savoir plus, consultez la documentation de débogage Skaffold.

Assistance

Pour envoyer des commentaires ou signaler un problème dans votre IDE IntelliJ, accédez à Outils > Cloud Code > Aide / À propos > Envoyer des commentaires ou signaler un problème pour signaler un problème sur GitHub, ou posez une question sur Stack Overflow.

Vous pouvez également rejoindre le canal #cloud-code, qui fait partie de la communauté Slack Google Cloud.