Alpha · Moodle 4.5+

Descubre qué está haciendo Moodle en realidad.

Una barra de depuración y pantalla azul de Tracy para desarrolladores de Moodle. Entiende toda la petición - desde una pila de llamadas fallida hasta las consultas SQL y los observadores de eventos.

Solo administradores por defecto · secretos ocultos · GPL-3.0-or-later

Página de Moodle con el panel Database de Tracy mostrando consultas SQL y resaltando consultas repetidas
Panel de base de datos en una petición real de Moodle, con consultas repetidas resaltadas como posible N+1.

Pasé dos años como desarrollador junior de Nette y me acostumbré a Tracy y a la experiencia de desarrollo del ecosistema Nette. Al pasar a desarrollar en Moodle, eché en falta esa visibilidad: las páginas de error estándar a menudo no daban suficiente contexto para entender toda la petición.

Conocía bien Tracy, así que primero traje su pantalla azul a Moodle. Luego empecé a añadir paneles específicos de Moodle para routing, usuarios, sesiones, consultas de base de datos, eventos y observadores. Ese experimento gradual se convirtió en tool_tracy.

Tracy encuentra el lugar. Xdebug explica el código.

Resuelven partes distintas del mismo problema de depuración y funcionan bien juntos.

01 · CONTEXTO DE LA PETICIÓN

Empieza con Tracy

Ve la excepción, la pila de llamadas, las consultas, el routing y los eventos de toda la petición. Usa ese contexto para encontrar la parte del sistema que merece la pena investigar.

02 · LÍNEA A LÍNEA

Profundiza con Xdebug

Pon un punto de interrupción en el código sospechoso, ejecútalo paso a paso e inspecciona las variables mientras cambian. Tracy acorta el camino hasta el punto de interrupción correcto; no sustituye a Xdebug.

Contexto útil, dentro de la página que estás depurando.

Sin volcados temporales repartidos por el código ni una ventana de log separada para la primera pasada.

Encuentra consultas de base de datos repetidas y lentas

El panel de base de datos combina los totales de la petición con una tabla opcional por consulta. Las consultas lentas se resaltan, y las que se repiten cinco o más veces se agrupan con su tiempo combinado.

  • Contadores de tiempo de lectura, escritura y total
  • Posibles patrones N+1 agrupados
  • Parche de desarrollo opcional de una línea para el detalle por consulta - desactivado por defecto, porque los valores literales de SQL pueden ser sensibles
Panel de base de datos mostrando un resumen de consultas duplicadas y los tiempos de cada consulta SQL

Ve los eventos y los observadores detrás de ellos

Inspecciona qué eventos de Moodle se dispararon durante la petición y qué observadores, del núcleo o de terceros, invocaría Moodle para cada clase de evento.

  • Eventos agrupados por clase y recuento
  • Callbacks de los observadores resueltos a través de la jerarquía de eventos
  • Datos de eventos filtrados, sin necesidad de parchear el núcleo
Panel de eventos mostrando los eventos de Moodle y los callbacks de los observadores registrados para ellos
ROUTING

Entiende la página

Método, ruta, tipo de página, layout, contexto y curso, además de los parámetros GET filtrados.

USUARIO

Inspecciona quién mira

Un volcado filtrado del usuario actual con los indicadores de sesión iniciada, invitado y administrador.

SESIÓN

Comprueba el estado de la petición

Contenido de la sesión filtrado, mientras que el ID de sesión real permanece siempre oculto.

El mismo fallo, con más contexto.

La página de error de Moodle ofrece la información esencial del fallo. Tracy añade argumentos expandibles y paneles a nivel de petición cuando necesitas investigar más.

Página de error de desarrollo de Moodle mostrando una excepción, los frames de la pila y el código fuente
Pantalla azul de Tracy mostrando la línea de origen del fallo, la pila de llamadas y la barra de depuración
Depuración estándar de Moodle: la excepción, los frames y el código fuente seleccionado.
Tracy: el fallo más los frames expandibles y la barra de depuración de la petición.

Valores por defecto conservadores para un depurador potente.

La salida de depuración puede exponer detalles internos de la aplicación. El plugin trata ese riesgo como una restricción de diseño.

ALCANCE POR DEFECTO

Solo administradores

La ruta de activación estándar limita la barra y la pantalla azul a los administradores del sitio por defecto.

FILTRADO

Secretos ocultos

Las claves reales de $CFG y los valores que parecen sensibles se ocultan, incluida la salida producida con el bdump() protegido.

PROTECCIÓN DE DESPLIEGUE

URL nueva, depurador desactivado

Una base de datos copiada no lleva en silencio un depurador activo a una URL de sitio diferente.

Solo desarrollo y staging. Mantén tool_tracy desactivado en producción. El filtrado reduce la exposición accidental, pero la salida de depuración debe seguir tratándose como sensible.

Instálalo en tres pasos.

Requiere Moodle 4.5 o posterior. Tracy viene incluido con el plugin, así que Moodle no necesita Composer en tiempo de ejecución.

  1. Clona el repositorio en el directorio admin/tool/tracy de Moodle.
  2. Visita Administración del sitio → Notificaciones para completar la instalación.
  3. Abre la configuración del depurador Tracy y mantén la activación en Solo administradores.

Moodle 4.5-5.0

git clone https://github.com/Krejcir6/moodle-tool_tracy.git \
  admin/tool/tracy

Moodle 5.1+

git clone https://github.com/Krejcir6/moodle-tool_tracy.git \
  public/admin/tool/tracy

Software alpha: revisa las limitaciones conocidas antes de adoptarlo. El listado opcional por consulta también requiere el parche de núcleo de Moodle documentado, solo para desarrollo.

Preguntas frecuentes.

¿tool_tracy sustituye a Xdebug?

No. Tracy te da una visión a nivel de petición; Xdebug es la herramienta más potente para puntos de interrupción y ejecución línea a línea. Se complementan.

¿Puedo usarlo sin parchear el núcleo de Moodle?

Sí. La pantalla azul y todos los paneles estándar funcionan sin parchear el núcleo. Solo la tabla detallada por consulta SQL necesita el parche de desarrollo opcional de una línea; los contadores agregados de base de datos están disponibles sin él.

¿Interfiere con las peticiones AJAX?

No. La barra de depuración solo se muestra en páginas HTML completas. Con la configuración por defecto de propiedad del manejador de errores (manejadores de Moodle), las respuestas JSON de error de Moodle para las llamadas AJAX no se tocan; cambiar a los manejadores de Tracy solo afecta a las peticiones de página normales, no a AJAX.

¿Es seguro para producción?

Es una herramienta de desarrollo y debe permanecer desactivada en producción. Sus valores por defecto y el filtrado reducen el riesgo, pero cualquier depurador puede exponer detalles internos de la aplicación.

¿Qué versiones de Moodle y PHP soporta?

Moodle 4.5 o posterior, con PHP 8.1+ (la versión incluida de Tracy 2.10 soporta PHP 8.0-8.4). Moodle 5.1+ trasladó el código accesible desde la web a un directorio public/, así que el plugin y la línea de config.php van en public/admin/tool/tracy y public/... en lugar de las rutas clásicas.

¿Por qué Tracy está incluido en el repositorio?

La política de librerías de terceros de Moodle favorece dependencias incluidas y declaradas para los plugins. La versión de Tracy incluida está fijada y documentada en thirdpartylibs.xml.