Depurar un servicio que se ejecuta localmente en Cloud Code for IntelliJ

Con Cloud Code, puedes depurar tus servicios de Cloud Run de forma local en un entorno similar a Cloud Run. Puedes definir puntos de interrupción, recorrer tu código y depurar servicios remotos que se ejecutan en contenedores.

Cloud Code también te permite depurar una aplicación mientras haces cambios en el código fuente y lo iteras.

Definir la configuración de depuración

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

  1. Ve al selector de configuración Ejecutar/Depurar de la barra de navegación y haz clic en Editar configuraciones.
  2. Elige Cloud Run: Run Locally (Cloud Run: ejecutar localmente) en Cloud Code: Cloud Run (Cloud Code: Cloud Run).
  3. Haz clic en Aceptar.

Depurar un servicio

Para depurar tu servicio, sigue estos pasos:

  1. Haz clic en icono de acción de depuración Depurar en Cloud Run: Ejecutar localmente para iniciar el ciclo de desarrollo en modo de depuración.

    Hacer clic en Ejecutar en Cloud Run: ejecutar localmente en modo de depuración

  2. Cloud Code adjuntará una sesión de depuración. Si el proceso se completa correctamente, se abrirá la ventana de la herramienta de depuración, que confirmará la conexión (en la pestaña Consola).

  3. Haz clic en el margen de la línea ejecutable del código en la que quieras añadir un punto de interrupción.

    Los círculos rellenos de color rojo indican puntos de interrupción activos, mientras que los círculos huecos con el contorno rojo indican puntos de interrupción inhabilitados.

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

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

    Registro de eventos con la notificación de que el despliegue se ha realizado correctamente y la URL para previsualizar el servicio

  5. Para finalizar la sesión de depuración, haz clic en el icono de detener de la configuración de ejecución de Cloud Run: ejecutar localmente.

IDEs compatibles

En la siguiente tabla se indican los idiomas y los IDEs que admite Cloud Code para la depuración. En la tabla también se indican los complementos necesarios, si procede:

Idioma IDEs y ediciones compatibles Complemento obligatorio
Java IntelliJ IDEA Ultimate N/A
Comunidad de IntelliJ IDEA N/A
Go IntelliJ IDEA Ultimate Complemento Go
GoLand N/A
Node.js IntelliJ IDEA Ultimate Plugin de Node.js
WebStorm N/A
Python IntelliJ IDEA Ultimate Complemento de Python
PyCharm Professional N/A

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

Con Cloud Code, puedes definir puntos de interrupción y depurar aplicaciones remotas que se ejecutan en contenedores en los siguientes lenguajes:

Java

Cloud Code añade automáticamente una variable de entorno, JAVA_TOOL_OPTIONS, con la configuración JDWP adecuada para habilitar la depuración. Si JAVA_TOOL_OPTIONS ya está presente, Cloud Code usa los ajustes especificados en JAVA_TOOL_OPTIONS.

Node.js

En función de la estructura de tu aplicación y de la configuración de compilación de su imagen, es posible que tengas que ayudar al depurador a asignar tus fuentes locales a las fuentes remotas del contenedor. De esta forma, el depurador de Node podrá procesar correctamente los puntos de interrupción.

Puede configurar esta opción de una de las siguientes formas:

  • Configuración manual

    Selecciona la configuración de ejecución Cloud Run: Run Locally (Cloud Run: ejecutar localmente) en el menú desplegable y, a continuación, haz clic en Edit Configurations (Editar configuraciones). En la pestaña Depuración, configura la asignación de origen desde el origen de tu aplicación local hasta la ubicación de origen del contenedor remoto.

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

    Opciones de configuración:

    • Archivo o directorio: el archivo o directorio local de tu aplicación que se ejecuta en Cloud Run.
    • Ruta remota: la ruta al archivo o directorio que se ejecuta en el contenedor de Cloud Run.
  • Configuración automática

    Puedes aplazar esta asignación a Cloud Code. Cuando inicies la sesión de depuración, Cloud Code intentará inferir esta asignación automáticamente. La asignación inferida se te presenta en un cuadro de diálogo, uno por cada artefacto que estés depurando.

    Cuadro de diálogo de asignación de rutas remotas para cada artefacto que especifica la ruta remota que se está usando

    Opciones de configuración:

    • Ruta local: la ruta local a la raíz del artefacto que estás depurando.
    • Ruta remota: la ruta al archivo o directorio que se ejecuta en el contenedor de Cloud Run. Puedes sustituirlo por el valor que quieras. Si haces clic en Cancelar, no se aplicará ninguna asignación.

Go

Para configurar tu aplicación para la depuración, debe ser una aplicación basada en módulos de Go y debe identificarse como una aplicación basada en Go. Para ello, debes definir una de las variables de entorno de tiempo de ejecución de Go estándar en el contenedor, como GODEBUG, GOGC, GOMAXPROCS o GOTRACEBACK. GOTRACEBACK=single es el ajuste predeterminado de Go y GOTRACEBACK=all es una configuración que suele ser útil.

De forma opcional (aunque recomendable), tu aplicación debe compilarse con las opciones -gcflags='all=-N -l' para inhabilitar las optimizaciones. Los perfiles de Skaffold son una opción útil para este propósito y se pueden definir con el campo Perfil de implementación de la configuración de ejecución en la pestaña Compilación/Implementación.

Python

Para configurar tu aplicación para depuración, asegúrate de que cumples los siguientes requisitos previos:

  • El IDE, la edición y el complemento son compatibles

    Para ver los IDEs, las ediciones y los complementos compatibles, consulta IDE compatibles.

  • La versión de Skaffold es 1.25.0 o posterior

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

  • El intérprete de Python está configurado

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

    IDE Cómo se configura
    IntelliJ IDEA Para depurar Python con Cloud Code, debes configurar un SDK de Python en tu proyecto.

    Ve a Archivo > Estructura del proyecto y añade un SDK de Python en la pestaña Proyecto. Si no hay ninguno, añada uno en la pestaña SDK.
    PyCharm Ve a Archivo > Configuración > Proyecto > Intérprete de Python o en Mac OS X, PyCharm > Preferencias > Proyecto > Intérprete de Python, y añade 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 de un problema en tu IDE de IntelliJ, ve a Herramientas > Cloud Code > Ayuda o información > Enviar comentarios o informar de un problema para informar de un problema en GitHub.