Usa el Depurador de Cloud

El Depurador de Cloud puede capturar y, también, inspeccionar la pila de llamadas y las variables locales de una aplicación activa que se ejecuta en la nube, en una variedad de plataformas como App Engine, Compute Engine, GKE y Cloud Run, sin detener la app ni disminuir su velocidad.

Funciona de una manera muy similar al depurador estándar del IDE y proporciona la misma interfaz de usuario, a excepción de dos diferencias clave:

  • El Depurador de Cloud no detiene la ejecución de la aplicación.
  • No puedes examinar una aplicación en el Depurador.

Para obtener más información sobre la compatibilidad con las plataformas del Depurador, consulta esta guía.

Requisitos

Para ejecutar el Depurador, necesitas lo siguiente:

Usa el Depurador

Para usar el Depurador, haz lo siguiente:

  1. Abre el proyecto en IntelliJ.
  2. Selecciona Run (Ejecutar) > Edit Configurations (Editar configuraciones).
  3. Haz clic en el signo más (+) en la esquina superior izquierda y selecciona Cloud Debugger (Depurador de Cloud) en la lista desplegable.
  4. Asígnale un nombre a la configuración en el campo Name (Nombre).
  5. Asegúrate de que tu proyecto esté seleccionado en el campo Project (Proyecto).
  6. Haz clic en OK (Aceptar).
  7. Haz clic en el ícono de error de color verde "debug" (depurar) para iniciar el depurador.
  8. En el cuadro de diálogo Attach to an Application (Adjuntar a una aplicación), selecciona el módulo de backend que deseas depurar y haz clic en Attach (Adjuntar).

Configura la ubicación de las instantáneas

Las instantáneas captan las variables locales y las pilas de llamadas en la ubicación especificada en tu código fuente. La ubicación de la instantánea se aplica a todas las instancias en ejecución de tu aplicación.

Para configurar la ubicación de las instantáneas, sigue estos pasos:

  1. Después de vincular el Depurador a una aplicación en ejecución, navega al archivo que contiene el código fuente que deseas mirar.
  2. Haz clic en las líneas ejecutables de las que deseas crear instantáneas en el margen izquierdo, como lo harías para establecer una interrupción de línea en una aplicación local mediante el depurador normal de IDEA.

    Aparece un círculo azul en el margen para marcar la ubicación de la instantánea. Además, se muestran las instantáneas pendientes en el panel Debugger Snapshots (Instantáneas del Depurador).

  3. Haz clic en el círculo azul para quitar la ubicación de la instantánea.

En el siguiente ejemplo, la ubicación de la instantánea se establece en la línea if (userAgent != null) {.

Configura la ubicación de una instantánea

Obtén una instantánea

La primera vez que una instancia ejecute el código en la ubicación de las instantáneas que estableciste, el depurador toma una instantánea y la pone a disposición para verla. Puedes examinarla y usar los datos que contiene a fin de depurar la aplicación.

La etiqueta de la instantánea que aparece en el panel de instantáneas del Depurador cambia de Pending (Pendiente) a la hora en que el Depurador capturó la instantánea.

Visualiza el seguimiento de pila

Conceptos avanzados

Configura una condición de instantánea

Una condición de instantánea es una expresión booleana que le indica al Depurador que tome una instantánea solo cuando se evalúe como verdadera. Por ejemplo, x !=0. La condición es una expresión booleana completa que puede incluir operadores lógicos y numéricos, por ejemplo, score < 0 || score > 500.

Expresiones de inspección

En ocasiones, la información que necesitas para depurar un problema no se detecta de inmediato en los campos y las variables locales de la aplicación. En particular, cuando se ejecuta en App Engine, el administrador de seguridad evita que examines demasiado los miembros privados de las clases del sistema, como java.util.Hashmap. En casos como este, una expresión de inspección actúa como una variable local temporal efectiva para mostrar información adicional. Las expresiones de inspección pueden evaluar expresiones complejas y desviar la jerarquía de los objetos cuando se toma una instantánea.

Puedes especificar una expresión de inspección después de configurar la ubicación de las instantáneas. Las expresiones de inspección admiten las mismas características de lenguaje que las condiciones de instantáneas, que se describieron antes.

Obtén asistencia

Para enviar comentarios, informa problemas en GitHub o haz preguntas en Stack Overflow.