Depura un servicio que se ejecuta de manera local en Cloud Code para IntelliJ

Con Cloud Code, puedes depurar tus servicios de Cloud Run de forma local en un entorno similar a Cloud Run. Puedes establecer interrupciones, revisar el código y depurar servicios remotos que se ejecutan en contenedores.

Cloud Code también te permite depurar una aplicación mientras aplicas cambios en el código fuente y, además, iteras en él.

Define tu configuración de depuración

Antes de depurar tu servicio, debes crear la configuración de depuración:

  1. Navega al selector de configuración Run/Debug en la barra de navegación y haz clic en Edit Configurations.
  2. Elige Cloud Run: Run Locally en Cloud Code: Cloud Run.
  3. Haga clic en OK.

Depura tu servicio

Para depurar tu servicio, sigue estos pasos:

  1. Haz clic en Icono de acción de depuración Debug para Cloud Run: Run Locally a fin de iniciar el ciclo de desarrollo en modo de depuración.

    Haz clic para ejecutar en Cloud Run: Run Locally en modo de depuración

  2. Cloud Code adjuntará una sesión de depuración. Una vez que se complete de forma correcta, se abrirá la ventana de la Herramienta de depuración para confirmar la conexión (dentro de la pestaña Console).

  3. Haz clic en el margen en la línea ejecutable del código en el que deseas agregar una interrupción.

    Los círculos rellenos de color rojo indican las interrupciones activas, mientras que los círculos vacíos con contornos rojos indican las interrupciones inhabilitadas.

  4. Para acceder a tu servicio en ejecución, haz clic en la URL que se muestra en el panel de Registro de eventos.

    Cuando lo hagas, se enviará una solicitud nueva a tu servicio y se pausará en la línea marcada con puntos de interrupción.

    Registro de eventos con una notificación de implementación correcta y una URL para obtener una vista previa de tu servicio

  5. Para finalizar la sesión de depuración, haz clic en el ícono de detener en la configuración de ejecución de Cloud Run: Run Locally.

IDE compatibles

En la siguiente tabla, se enumeran los IDE y lenguajes que Cloud Code admite para la depuración. En la tabla, también se enumeran los complementos necesarios, si corresponde:

Lenguaje Ediciones y IDE compatibles Complemento requerido
Java IntelliJ IDEA Ultimate No disponible
Comunidad de IntelliJ IDEA No disponible
Go IntelliJ IDEA Ultimate Complemento de Go
GoLand No disponible
Node.js IntelliJ IDEA Ultimate Complemento de Node.js
WebStorm No disponible
Python IntelliJ IDEA Ultimate Complemento de Python
PyCharm Professional No disponible

Para obtener más información sobre la compatibilidad con el IDE, consulta IDE de JetBrains compatibles.

Con Cloud Code, puedes establecer interrupciones y depurar las aplicaciones remotas que se ejecutan en contenedores para los siguientes lenguajes:

Java

Cloud Code agrega de forma automática una variable de entorno, JAVA_TOOL_OPTIONS, con la configuración JDWP adecuada para habilitar la depuración. Si JAVA_TOOL_OPTIONS ya se agregó, Cloud Code usa la configuración existente especificada en JAVA_TOOL_OPTIONS.

Node.js

Según la estructura de la aplicación y la configuración de compilación de tu imagen, es posible que debas ayudar al depurador a asignar tus fuentes locales a las fuentes remotas del contenedor. Esto permite que el depurador de nodos procese tus interrupciones de forma correcta.

Puedes configurarlo de una de las siguientes maneras:

  • Configuración manual

    Selecciona Cloud Run: Run Locally en la lista desplegable y haz clic en Edit Configurations. En la pestaña Debug, configura la asignación de origen de tu origen de aplicación local a la ubicación de origen en el contenedor remoto.

    Elige una ubicación de origen en la sección de asignación de origen de la pestaña de Depuración

    Opciones de configuración:

    • File/Directory: Es el archivo local o directorio de la aplicación que se ejecuta en Cloud Run.
    • Remote Path: Es la ruta de acceso al archivo o directorio que se ejecuta en el contenedor en Cloud Run.
  • Configuración automática

    Puedes optar por diferir este mapeo a Cloud Code. Cuando inicias tu sesión de depuración, Cloud Code intenta inferir esta asignación de forma automática. La asignación inferida se presenta en un cuadro de diálogo, un diálogo por cada artefacto que depures.

    Diálogo de mapeo de la ruta de acceso remoto para cada artefacto que especifica la ruta remota que se usará

    Opciones de configuración:

    • Local path: es la ruta de acceso local a la raíz del artefacto que se depura.
    • Remote Path: Es la ruta de acceso al archivo o directorio que se ejecuta en el contenedor en Cloud Run. Puedes anularlo con tu propio valor. Si haces clic en Cancel, no se aplicará ninguna asignación.

Go

A fin de configurar tu aplicación para la depuración, tu aplicación debe ser una aplicación basada en el Módulo de Go y debe identificarse como basada en Go mediante la configuración de una de las variables de entorno de ejecución de Go estándar en el contenedor, como GODEBUG, GOGC, GOMAXPROCS o GOTRACEBACK. GOTRACEBACK=single es la configuración predeterminada para Go y GOTRACEBACK=all es, por lo general, una configuración útil.

De forma opcional (pero recomendada), tu aplicación debe compilarse con las opciones -gcflags='all=-N -l' para inhabilitar las optimizaciones. SkaffoldPerfiles son una opción útil para este fin y se pueden configurar con el Perfil de implementación en tu configuración de ejecución en la pestaña Build/Deploy.

Python

A fin de configurar tu aplicación para la depuración, asegúrate de cumplir con los siguientes requisitos:

  • IDE, edición y complemento son compatibles

    Para obtener información sobre IDE, ediciones y complementos compatibles, consulta IDE compatibles.

  • La versión de Skaffold es 1.25.0 o superior

    Puedes permitir que Cloud Code administre tus dependencias o apunte a una instalación local de Skaffold. Consulta Preferencias > Herramientas > Cloud Code > Dependencias.

  • Se configuró el intérprete de Python

    Sin un intérprete de Python configurado en tu proyecto, la depuración no funcionará, ya que no hay forma de ejecutar pydevd, el depurador subyacente de Python.

    IDE Cómo configurar
    IntelliJ IDEA La depuración de Python con Cloud Code requiere que se configure un SDK de Python para tu proyecto.

    Ve a File > Project Structure y agrega un SDK de Python en la pestaña Project. Si no existe ninguna, agrega una en la pestaña SDK.
    PyCharm Ve a File > Settings > Project > Python Interpreter o para Mac OS X, PyCharm > Preferences > Python > Python Interpreter y agrega un intérprete de Python.

Para obtener más información, consulta la documentación de depuración de Skaffold.

Obtener asistencia

Para enviar comentarios o informar un problema en tu IDE de IntelliJ, ve aTools >Cloud Code >Help / About >Envía comentarios o informa un problema para informar un problema en GitHub o hacer una pregunta en Stack Overflow.