Outils et techniques de débogage d'un site Drupal 8

Comparé à Drupal 7, plusieurs améliorations techniques ont été apportées dans le cœur de Drupal 8 (notamment l'intégration de la POO, l'intégration du système de plugin et l'utilisation de Twig comme moteur de template).

Pour suivre ces évolutions, les outils et les techniques de débogage ont évolué également et se diffèrent entre des mises à jour des anciennes techniques de débogage et de nouvelles techniques qui sont apparues après la sortie de Drupal 8.
Cet article recense les différents outils et techniques que vous pouvez utiliser pour déboguer un site Drupal 8.

 

Le mode développement

Le module devel

Drupal Console

Xdebug

Le mode développement

 

Le passage en mode développement est en effet la première action à faire pour simplifier le débogage d'un site Drupal 8.
Drupal met presque tous ses composants en cache, y compris les fichiers de template Twig. Raison pour laquelle, certains outils de débogage n'auront pas d'effet que le lorsque vous videz le cache de drupal.

Cet article sur drupal.org vous explique comment vous activez le mode développement qui vous permet par défaut de : 

  • Désactiver la mise en cache.
  • Activer le débogage du thème ( grâce à ce paramétrage inclus dans le fichier
    development.services.yml
    :   

parameters:
  twig.config:
    debug: true
    auto_reload: true
    cache: false

L'activation du débogage de thème ajoute des commentaires dans le code html qui vous permet de connaître les suggestions des noms de templates Twig pour les surcharger, ainsi que le template utilisé lors du rendu de contenu.

 

 

Le module devel

 

La version Drupal 8 du module Devel intégre deux sous-modules:

 

- Kint: intègre la bibliothèque kint qui permet de formatter les informations d'une variable pour une meilleure lisibilité.


L'activation de ce module vous permet d'utiliser les deux fonctions:

 

  • kint()
    : affiche les informations structurées d'une variable en haut de la page.
  • ksm()
    : affiche les informations structurées d'une variable dans la zone de message du thème.

 

- WebProfiler: permet d'afficher des informations utiles sur l'utilisation des ressources sur chaque page (utilisation de la mémoire, le nombre de requêtes, les vues, les blocs et les formulaires affichés, etc), l'activation du ce sous-module affiche une barre d'outils en bas de la page intégrant ces informations.

 

 

Drupal Console

 

Drupal console propose de nombreuses commandes qui permet de faciliter le débogage:

 

La commande
drupal list | grep "debug"
permet de lister l'ensemble des commandes de débogage:

 

  debug:breakpoints (dbre)                Displays breakpoints available in application
  debug:cache:context (dcc)               Displays current cache context for the application.
  debug:chain (dch)                       List available chain files.
  debug:config (dc)                       List configuration objects names and single configuration object.
  debug:config:settings (dcs)             Displays current key:value on settings file.
  debug:config:validate (dcv)             Validate a schema implementation before a module is installed.
  debug:container (dco)                   Displays current services for an application.
  debug:cron (dcr)                        List of modules implementing a cron
  debug:database:log (dbb)                Displays current log events for the application
  debug:database:table (ddt)              Show all tables in a given database.
  debug:entity (de)                       Debug entities available in the system
  debug:event (dev)                       Displays current events 
  debug:image:styles (dis)                List image styles on the site
  debug:libraries (dl)                    Displays libraries available in application
  debug:module (dm)                       Displays current modules available for application
  debug:multisite (dmu)                   List all multisites available in system
  debug:permission (dp)                   Displays all user permissions.
  debug:plugin (dpl)                      Displays all plugin types.
  debug:queue (dq)                        Displays the queues of your application
  debug:router (dr)                       Displays current routes for the application or information for a particular route
  debug:settings (dse)                    List user Drupal Console settings.
  debug:site (dsi)                        List all known local and remote sites.
  debug:state (dst)                       Show the current State keys.
  debug:test (td)                         List Test Units available for the application.
  debug:theme (dt)                        Displays current themes for the application
  debug:update (du)                       Displays current updates available for the application
  debug:user (dus)                        Displays current users for the application
  debug:views (vde)                       Displays current views resources for the application
  debug:views:plugins (dvp)               Displays current views plugins for the application
  dotenv:debug                            Debug Dotenv debug values.


En plus, deux autres commandes peuvent être utiles: 


drupal site:statistics                    Show the current statistics of website
drupal site:status                        View current Drupal Installation status

 

Xdebug

 

Connu comme un outil très puissant pour le débogage de scripts et d'applications PHP, La mise en place d'Xdebug dans un environnement de développement Drupal vous facilitera beaucoup le débogage de votre projet.

 

L'utilisation d'Xdebug au sein de votre éditeur PHP (tel que PHPStorm) vous permettra de faire plusieurs actions de débogage au moment de l'exécution de votre projet (faire des point d'arrêt, voir la pile d'appels, tester le retour des expressions et des fonctions, etc).


Cet article sur drupal.org vous explique comment installer et configurer Xdebug en fonction de votre éditeur.