
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 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:
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.