Catégorie 04SKILLS

Xdebug Skill

PHP Xdebug 3 — debug, profiling et couverture de code

Installation
PHP extension (Ubuntu/Debian)pecl install xdebug echo "zend_extension=xdebug.so" >> /etc/php/8.3/fpm/conf.d/99-xdebug.ini
DDEV (recommandé)ddev xdebug on # Activer ddev xdebug off # Désactiver (important pour les perfs !)
Docker (override)# docker-compose.override.yml # XDEBUG_MODE: debug # XDEBUG_CONFIG: client_host=host-gateway client_port=9003
Skill Claude — Globalmkdir -p ~/.claude/skills/xdebug
SKL
À propos

Skill Claude pour configurer et utiliser Xdebug 3 dans un environnement de développement Drupal. Couvre le step debugging (breakpoints), le profiling (callgrind), la couverture de code pour PHPUnit, la configuration dans DDEV/Docker, et l'intégration IDE (PhpStorm, VS Code).

Commandes
CommandeDescription
ddev xdebug on / offActiver/désactiver Xdebug dans DDEV (relance PHP-FPM)
php -r "phpinfo();" | grep xdebugVérifier que Xdebug est chargé et actif
XDEBUG_SESSION=1 php script.phpActiver une session Xdebug en ligne de commande
php -dxdebug.mode=profile script.phpProfiler un script CLI (génère cachegrind.out.*)
Exemples
Configurer Xdebug dans DDEV pour PhpStormCODE
# 1. Activer Xdebug dans DDEV
ddev xdebug on

# 2. Vérifier que PhpStorm écoute sur le port 9003
# Run → "Start Listening for PHP Debug Connections"

# 3. Dans le navigateur, activer la session Xdebug
# Via l'extension Xdebug Helper ou en ajoutant ?XDEBUG_SESSION=1

# 4. PhpStorm doit automatiquement configurer le path mapping
# /var/www/html → projet local via DDEV

# 5. Désactiver après utilisation (performance !)
ddev xdebug off
Profiler une page Drupal lenteCODE
"Configure Xdebug en mode profiling pour trouver les goulots d'étranglement
sur la page /catalogue qui prend 8 secondes à charger :
1. Config php.ini pour le profiling (output_dir, filename)
2. Déclencher le profiling sur une seule requête (?XDEBUG_PROFILE=1)
3. Analyser le fichier callgrind.out avec KCachegrind
4. Identifier les top 10 appels les plus coûteux
5. Expliquer comment interpréter les résultats (Self time vs Inclusive time)"