Débogage PHP

De Cliss XXI
Révision datée du 31 décembre 2006 à 17:15 par imported>SylvainBeucler (→‎Xdebug : fonctions de débogage)
Sauter à la navigation Sauter à la recherche

Il existe des outils pour tracer les erreurs dans PHP. Nous ne parlerons que des outils libres, cela va de soit.

DBG

Interface de contrôle en ligne de commande, ou avec DDD.


APD

Non-intéractif, plutôt un profiler


Xdebug

Modifie le gestionnaire d'erreur de PHP pour afficher l'état de la pile d'appels (stacktrace).

Xdebug.png

Il y a moyen que PHP/xdebug contacte un client via TCP/IP (debugclient) pour lancer une session de débogage. L'outil est franchement primitif et j'ai du mal à l'utiliser. Apparemment il faut avoir un IDE qui intègre la communication avec xdebug, mais l'outil recommandé est prioriétaire. On est loin de C+GDB.

Le protocole dit "GDB" n'est aucunement utilisable avec GDB lui-même, ni avec le mode GUD d'Emacs. En fait on peut intéragir avec ce "protocole" via un simple netcat (nc -l -p 9000), il n'a pas grand chose à voir avec GDB. Le jeu de commande reste relativement simple cependant (bt, run, finish, break {main}, etc.). Pas d'alias ou raccourcis pour les commandes comme dans GDB.

Le nouveau protocole DBGP utilise un autre jeu de commande plus lourd (run -i IDENTIFIANT à la place de run, breakpoint_set -i IDENTIFIANT {main} à la place de break {main}...), et répond en XML. Bref ce n'est pas utilisable sans IDE.

Les sessions de débogage dans une appli web peuvent être suivies via un cookie qui indique l'identifiant de session. J'ai essayé de lancer un débogage pas à pas, mais l'exécution reprend sans mon accord au bout d'un moment, et la commande "list" ne me dit pas toujours sur quelle ligne je me trouve. Pas moyen non plus d'obtenir le nom du fichier courant, ou alors j'ai mal cherché.

Bref, c'est déjà ça mais peut mieux faire.

Gubed

Modifie les scripts PHP à la volée pour appeler le debugger. Ce modèle est simple, mais ne pose-t-il pas des limitations (comment remonter d'une ligne ou gérer la pile des appels, par exemple?)

Quanta Plus propose un environnement intégré de programmation et s'intègre avec Gubed. Voici une documentation qui explique comment configurer le tout. Je n'ai pas réussi à la faire fonctionner...

Il y a également une interface graphique spécifique à Gubed.


Liens