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 distants exécutés dans des conteneurs.
Définir la configuration de débogage
Avant de déboguer votre service, vous devez créer votre configuration de débogage:
- Accédez à la boîte de dialogue "Run/Debug configurations" (Configurations d'exécution/de débogage) dans la barre des tâches supérieure, puis cliquez sur "Edit Configurations" (Modifier les configurations).
- Sélectionnez "Cloud Run: Run Locally" (Cloud Run : Exécuter localement) sous Cloud Code : Cloud Run.
- Cliquez sur "OK".
Déboguer votre service
Pour déboguer votre service, procédez comme suit:
Cliquez sur l'action de débogage
pour "Cloud Run: Run Locally" (Cloud Run : Exécuter localement) pour démarrer le cycle de développement en mode de débogage.
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").
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.
Pour accéder à votre service en cours d'exécution, cliquez sur l'URL affichée dans le panneau du journal des événements.
Une nouvelle requête est alors envoyée à votre service et s'interrompt sur la ligne marquée par le point d'arrêt.
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).
Détails de la configuration
Cloud Code, dans sa configuration d'origine fournie par Skaffold, peut vous aider à configurer vos sessions de débogage. 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 elle est déjà présente, 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 création 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.
Il existe deux façons de procéder à cette configuration :
Configuration manuelle
Dans le menu déroulant, sélectionnez la configuration d'exécution "Cloud Run: Run Locally" (Cloud Run : Exécuter localement) et sélectionnez "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.
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. Il vous sera présenté dans une boîte de dialogue (une boîte de dialogue pour chaque artefact que vous déboguez).
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 appuyez sur
Cancel
, aucun mappage n'est appliqué.
Go
Pour configurer votre application pour le débogage, elle doit être :
- une application basée sur un module Go ;
- identifiée comme Go en définissant l'une des variables de l'environnement d'exécution Go standard dans le conteneur, telles que
GODEBUG
,GOGC
,GOMAXPROCS
, ouGOTRACEBACK
.GOTRACEBACK=single
est le paramètre par défaut pour Go, etGOTRACEBACK=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).
Pour en savoir plus, consultez la documentation sur le débogage de Skaffold.