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:
- Ve al selector de configuración Ejecutar/Depurar de la barra de navegación y haz clic en Editar configuraciones.
- Elige Cloud Run: Run Locally (Cloud Run: ejecutar localmente) en Cloud Code: Cloud Run (Cloud Code: Cloud Run).
- Haz clic en Aceptar.
Depurar un servicio
Para depurar tu servicio, sigue estos pasos:
Haz clic en
Depurar en Cloud Run: Ejecutar localmente para iniciar el ciclo de desarrollo en modo de depuración.
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).
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.
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.
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.
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.
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.