Utiliser Cloud Debugger dans Cloud Code for IntelliJ

Cloud Debugger permet d'enregistrer et d'inspecter la pile d'appel et les variables locales en temps réel dans une application exécutée dans le cloud, sans arrêter l'application ni la ralentir. Debugger est compatible avec les produits Google Cloud, tels qu'App Engine, Compute Engine, GKE et Cloud Run.

Debugger fonctionne sensiblement comme le débogueur standard de votre IDE et fournit la même interface utilisateur, avec les différences clés suivantes :

  • Debugger ne suspend pas l'exécution de l'application en cours d'exécution.
  • Debugger ne permet pas l'exécution pas à pas.

Pour en savoir plus sur les plates-formes compatibles avec Debugger, consultez la page Configurer Debugger.

Conditions requises

Pour exécuter Debugger, vous avez besoin des éléments suivants :

Utiliser le débogueur

Pour utiliser le débogueur, procédez comme suit :

  1. Ouvrez votre projet dans IntelliJ.
  2. Cliquez sur Exécuter > Modifier les configurations.
  3. Cliquez sur + Add New Configuration (Ajouter une configuration) en haut à gauche, puis sélectionnez Google Cloud Debugger dans la liste déroulante.
  4. Attribuez un nom à votre configuration dans le champ Name (Nom).
  5. Assurez-vous que votre projet est sélectionné dans le champ Project.
  6. Cliquez sur OK.
  7. Pour lancer le débogueur, cliquez sur Icône de débogage Debug dans la barre d'outils.
  8. Dans la boîte de dialogue Attach to an Application (Associer à une application), sélectionnez le module backend à déboguer, puis cliquez sur Attach (Associer).

Définir un emplacement d'instantané

Un instantané enregistre la pile d'appels et les variables locales à l'emplacement spécifié du code source. L'emplacement de l'instantané s'applique à toutes les instances en cours d'exécution de votre application.

Pour définir un emplacement d'instantané :

  1. Après avoir associé Debugger à une application en cours d'exécution, ouvrez le fichier contenant le code source à examiner.
  2. Cliquez sur la ligne exécutable que vous souhaitez capturer dans la zone gouttière de gauche, comme vous le feriez pour définir un point d'arrêt pour une application locale à l'aide du débogueur IDEA standard.
  3. Dans la boîte de dialogue Set Breakpoint (Définir le point d'arrêt), sélectionnez Cloud Snapshot Location (Emplacement de la capture d'écran cloud). Un cercle bleu apparaît dans la marge pour indiquer l'emplacement de l'instantané. Le volet "Instantanés de débogage" affiche les instantanés en attente.
  4. Pour désactiver l'emplacement de l'instantané, effectuez un clic droit sur le cercle bleu, puis décochez la case Activé.
  5. Pour supprimer l'emplacement d'instantané, cliquez sur le cercle bleu.
Définir un emplacement d'instantané

Obtenir l'instantané

La première fois qu'une instance exécute le code situé à l'emplacement d'instantané que vous avez défini, le débogueur enregistre un instantané et le rend disponible pour l'affichage. Vous pouvez ensuite examiner l'instantané et utiliser les données pour déboguer votre application.

Dans le volet "Debugger Snapshots", le libellé de l'instantané n'indique plus Pending (En attente) mais l'heure à laquelle le débogueur a enregistré l'instantané.

Concepts avancés

Définir une condition d'instantané

Une condition d'instantané est une expression booléenne qui indique au débogueur de prendre un instantané uniquement lorsque sa valeur est vraie. Par exemple, x !=0. La condition est une expression booléenne complète pouvant inclure des opérateurs logiques et numériques, comme score < 0 || score > 500 par exemple.

Pour définir une condition d'instantané:

  1. Dans la gouttière, effectuez un clic droit sur l'emplacement Cloud Snapshot (le cercle bleu).
  2. Dans le champ Condition, saisissez la condition.

Expressions de contrôle

Parfois, les informations dont vous avez besoin pour déboguer un problème n'apparaissent pas immédiatement dans les variables locales et les champs de l'application. En particulier, lorsqu'il est exécuté sur App Engine, Security Manager vous empêche d'effectuer un examen trop approfondi des membres privés des classes système telles que java.util.Hashmap. Dans de tels cas, une expression de contrôle sert de variable locale temporaire efficace pour afficher des informations supplémentaires. Les expressions de contrôle peuvent évaluer des expressions complexes et traverser des hiérarchies d'objets lorsqu'un instantané est pris.

Vous pouvez spécifier une expression de contrôle après avoir défini l'emplacement de l'instantané. Les expressions de contrôle sont compatibles avec les mêmes fonctionnalités de langage que les conditions d'instantané décrites dans la section Définir une condition d'instantané.

Obtenir de l'aide

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.