Debug


1Présentation

Temma fournit un plugin dédié au débogage. Il permet de récolter des données sur la requête en cours d'exécution, et d'y accéder au travers d'une barre qui s'affiche en bas des pages (lorsque la vue Smarty est utilisée).

La barre de débogage permet d'accéder aux données suivantes :

  • Les messages de log, pour ne pas avoir à ouvrir le fichier log/temma.log.
  • Les variables de session, les variables GET, les cookies, et les variables de template.
  • Les constantes : le contenu de la super-globale $_SERVER et les variables de template.
  • La configuration.
  • La télémétrie, c'est-à-dire l'arborescence des appels de fonction, et leur temps d'exécution.

2Configuration

2.1Activation

Pour activer le plugin, il suffit de le déclarer comme préplugin dans le fichier de configuration etc/temma.php :

<?php

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

Attention !

Ce plugin ne doit être activé que sur un poste de développement, et jamais sur des serveurs de production.

Il est donc vivement conseillé de l'ajouter uniquement dans le fichier de configuration etc/temma.dev.php, plutôt que dans le fichier principal etc/temma.php. Ainsi, vous serez sûr que le plugin ne sera activé que sur les machines dont la variable ENVIRONMENT vaut dev (voir la documentation de la configuration par plateforme).

Utilisez la clé _pre__prepend pour que le plugin soit le premier de la liste.

Exemple de fichier etc/temma.dev.php :

<?php

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

Pour votre information, sachez que le plugin va s'enregistrer de lui-même comme post-plugin. Mais vous ne devez pas l'ajouter dans la configuration en tant que post-plugin, sinon il s'exécutera deux fois, ce qui causera des dysfonctionnements.


2.2Désactivation de fonctionnalités

Le fait de configurer le pré-plugin activera toutes les fonctionnalités de débogage.
Il est toutefois possible d'activer ou de désactiver chaque fonctionnalité. Cela peut être pratique pour économiser de la mémoire lors de l'exécution de la requête. Pour cela, il faut définir la configuration étendue x-debug :

<?php

return [
    'x-debug' => [
        // pour désactiver l'affichage de la barre de débogage,
        // sans désactiver la collecte de données
        'showBar'       => false,
        // pour désactiver la collecte et l'affichage des messages de log
        'showLogs'      => false,
        // pour désactiver l'affichage des variables
        'showVariables' => false,
        // pour désactiver l'affichage des constantes ($_SERVER et environnement)
        'showConstants' => false,
        // pour désactiver l'affichage de la configuration
        'showConfig'    => false,
        // pour désactiver la télémétrie
        'showTelemetry' => false,
    ]
];

3Télémétrie

La télémétrie permet de voir l'arborescence des appels de fonctions durant l'exécution de la requête, avec le temps d'exécution de chaque fonction.

Cet outil se base sur les fonctions register_tick_function et debug_backtrace de PHP. Malheureusement, ces fonctions ne permettent pas de garantir une récupération précise à 100%.
Il faut donc considérer la télémétrie offerte par Temma comme un outil indicatif, mais non exhaustif.

Si vous avez besoin d'une télémétrie complète et exacte, vous pouvez vous tourner vers des outils comme OpenTelemetry, Xdebug ou Blackfire.