Différences entre versions de « Débogage PHP »
imported>SylvainBeucler (→Xdebug : instructions Xdebug + GEBEN + DBGp) |
imported>SylvainBeucler m (suppression BODY (404) et autre ordre (avec XDebug en premier)) |
||
Ligne 2 : | Ligne 2 : | ||
Pour l'instant, xdebug est le plus proche du fonctionnel parmi les solutions disponibles. | Pour l'instant, xdebug est le plus proche du fonctionnel parmi les solutions disponibles. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Xdebug == | == Xdebug == | ||
Ligne 111 : | Ligne 89 : | ||
Il y a également une interface graphique spécifique à Gubed. | Il y a également une interface graphique spécifique à Gubed. | ||
− | = | + | == DBG == |
+ | |||
+ | * http://dd.cron.ru/dbg/ | ||
+ | * debugging and profiling | ||
+ | * Extension PHP | ||
+ | |||
+ | Interface de contrôle en ligne de commande, ou avec DDD. | ||
+ | |||
+ | La nouvelle version 3 est proprio et intégrée dans un IDE (pas essayé). | ||
− | + | La version 2 est libre mais ne compilait pas fin 2006 - à retester.. | |
− | + | == APD == | |
+ | |||
+ | * Advanced PHP Debugger | ||
+ | * http://pecl.php.net/package/apd/ | ||
+ | * Extension Zend | ||
+ | |||
+ | Non-intéractif, plutôt un ''profiler'' | ||
= Autres outils = | = Autres outils = |
Version du 4 décembre 2008 à 18:13
Il existe des outils libres pour tracer les erreurs dans PHP.
Pour l'instant, xdebug est le plus proche du fonctionnel parmi les solutions disponibles.
Xdebug
- Xdebug extensions for PHP
- http://www.xdebug.org/
- Extension Zend
Xdbug peut contacter un client via TCP/IP (debugclient) pour lancer une session de débogage.
Il y a deux protocoles:
- GDB (sans rapporta avec le GNU debugger) est utilisable via un simple netcat (nc -l -p 9000). 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.
- 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. Il faut donc avoir un IDE qui intègre la communication avec xdebug.
Les sessions de débogage dans une appli web peuvent être suivies via un cookie qui indique l'identifiant de session.
Exemple d'installation
On utilise Xdebug + GEBEN (mode pour Emacs 22) + DGBp:
# Xdebug wget 'http://www.xdebug.org/link.php?url=xdebug203' tar xzf xdebug-2.0.3.tgz cd xdebug-2.0.3 phpize ./configure --enable-xdebug make sudo make install cd debugclient ./configure && make && make install cat <<EOF > /etc/php5/conf.d/xdebug.ini zend_extension="/usr/lib/php5/20060613+lfs/xdebug.so" xdebug.remote_enable = 1 xdebug.remote_host = localhost xdebug.remote_port = 9000 xdebug.remote_handler = dbgp EOF # GEBEN wget http://geben-on-emacs.googlecode.com/files/geben-0.19.tar.gz tar xzf geben-0.19.tar.gz cd geben-0.19 make sudo make install cat <<EOF >> ~/.emacs (autoload 'geben "geben" "PHP Debugger on Emacs" t) EOF
Pour tester:
- Lancer Emacs
M-x geben
(lancedebugclient
qui écoute sur le port 9000)- Visiter http://localhost/~moi/monscript.php?XDEBUG_SESSION_START=1
Emacs se positionne sur le fichier et permet d'avancer pas à pas. La touche "v" affiche l'ensemble des variables, globales et locales, sous une forme arborescente.
Autres éditeurs libres:
- Eclipse: http://www.eclipse.org/pdt/ and http://www.phpeclipse.net/
- NetBeans: http://php.netbeans.org/
- Protoeditor: http://protoeditor.sourceforge.net/
- VI: http://www.vim.org/scripts/script.php?script_id=1929
Référence:
Autres
Xdebug peut aussi modifier le gestionnaire d'erreur de PHP pour afficher l'état de la pile d'appels (stacktrace).
(note: on peut faire un effet similaire avec du code PHP du style set_error_handler("debug_print_backtrace");
)
Gubed
- Gubed PHP Debugger
- http://gubed.mccabe.nu/
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.
DBG
- http://dd.cron.ru/dbg/
- debugging and profiling
- Extension PHP
Interface de contrôle en ligne de commande, ou avec DDD.
La nouvelle version 3 est proprio et intégrée dans un IDE (pas essayé).
La version 2 est libre mais ne compilait pas fin 2006 - à retester..
APD
- Advanced PHP Debugger
- http://pecl.php.net/package/apd/
- Extension Zend
Non-intéractif, plutôt un profiler
Autres outils
Apparemment il y a un ou deux produits propriétaires intégrés dans des IDE elles-aussi proprio. Pensez à vérifier la licence d'un produit qu'on vous recommande.
Liens
- http://php.net/debugger : plus de debug intégré à partir de PHP4; quelques liens