Debug


1Introducción

Temma ofrece un plugin dedicado a la depuración. Te permite recopilar datos sobre la petición que se está ejecutando, y acceder a ellos mediante una barra que se muestra en la parte inferior de las páginas (cuando se usa la vista Smarty).

La barra de depuración da acceso a los siguientes datos:

  • Mensajes de log, para que no tengas que abrir el archivo log/temma.log.
  • Variables de sesión, variables GET, variables POST, cookies y variables de plantilla.
  • Constantes: contenido de la superglobal $_SERVER y variables de entorno.
  • Configuración.
  • Telemetría, es decir, la estructura en árbol de las llamadas a funciones y sus tiempos de ejecución.

2Configuración

2.1Activación

Para activar el plugin, basta con declararlo como pre-plugin en el archivo de configuración etc/temma.php:

<?php

return [
    'plugins' => [
        '_pre' => [
             '\Temma\Plugins\Debug'
        ]
    ]
];

¡Atención!

Este plugin solo debe activarse en un puesto de desarrollo, y nunca en servidores de producción.

Por ello, te recomendamos encarecidamente añadirlo únicamente al archivo de configuración etc/temma.dev.php, en lugar de añadirlo al archivo principal etc/temma.php. Esto garantizará que el plugin solo se active en las máquinas donde la variable ENVIRONMENT tenga el valor dev (ver la documentación de configuración por plataforma).

Usa la clave _pre__prepend para que el plugin sea el primero de la lista.

Ejemplo de archivo etc/temma.dev.php:

<?php

return [
    'plugins' => [
        '_pre__prepend' => [
             '\Temma\Plugins\Debug'
        ]
    ]
];

Para tu información, el plugin se registrará él mismo como post-plugin. Pero no debes añadirlo a la configuración como post-plugin, ya que de lo contrario se ejecutaría dos veces, provocando disfunciones.


2.2Desactivación de funciones

Configurar el pre-plugin activará todas las funciones de depuración.
Sin embargo, es posible activar o desactivar cada funcionalidad individualmente. Esto puede ser útil para ahorrar memoria durante la ejecución de la petición. Para ello, hay que definir la configuración extendida x-debug:

<?php

return [
    'x-debug' => [
        // para desactivar la visualización de la barra de depuración,
        // sin desactivar la recopilación de datos
        'showBar'       => false,
        // para desactivar la recopilación y visualización de los mensajes de log
        'showLogs'      => false,
        // para desactivar la visualización de las variables
        'showVariables' => false,
        // para desactivar la visualización de las constantes ($_SERVER y entorno)
        'showConstants' => false,
        // para desactivar la visualización de la configuración
        'showConfig'    => false,
        // para desactivar la telemetría
        'showTelemetry' => false,
    ]
];

3Telemetría

La telemetría te permite ver la estructura en árbol de las llamadas a funciones durante la ejecución de la petición, junto con el tiempo de ejecución de cada función.

Esta herramienta se basa en las funciones register_tick_function y debug_backtrace de PHP. Lamentablemente, estas funciones no pueden garantizar una recuperación 100% precisa.
Por lo tanto, la telemetría que ofrece Temma debe considerarse una herramienta indicativa, pero no exhaustiva.

Si necesitas una telemetría completa y precisa, puedes recurrir a herramientas como OpenTelemetry, Xdebug o Blackfire.