APD : Advanced PHP Debugger
Par Armel FAUVEAU, mardi 20 novembre 2001 à 01:10 :: Actualités PHP :: #1460 :: rss
Après APC (Alternative PHP Cache), voici APD (Advanced PHP Debugger). Cet outil n'est pas un debugger interactif comme il en existe déjà (on peut citer DBG par exemple). Mais il se rapproche plutôt d'outils comme strace ou encore truss, connus des développeurs Unix. A ce titre, APD permet de récuppérer dans un fichier de logs (de traces) une foultitude d'évenements comme les appels aux fonctions, les passages d'arguments ou encore les temps d'exécution.
APD se présente comme une extension Zend. Après l'étape de compilation (un simple ./configure a suffit pour moi), il reste à paramétrer le php.ini afin d'embarquer cette nouvelle extension.
; activation de l'extension zend_extension=/chemin/vers/php_apd.so ; paramétrage du chemin de sauvegarde des logs apd.dumpdir=/chemin/vers/tracedump/Ensuite, afin d'invoquer l'appel à APD (qui restera muet par défaut), vous devez utiliser dans vos scripts la fonction apd_set_session_trace(N).
La valeur N est une combinaison de :
#define FUNCTION_TRACE 1 #define ARGS_TRACE 2 #define ASSIGNMENT_TRACE 4 #define STATEMENT_TRACE 8 #define MEMORY_TRACE 16 #define TIMING_TRACE 32Par exemple afin d'activer les traces sur les temps d'execution, les fonctions et les passages d'arguments, il vous suffira d'insérer la ligne apd_set_session_trace(35) dans le script que vous souhaitez tracer.
Voici un exemple de trace proposé sur le site d'APD :
16:37:51(george@wasabi)[~/src/apd]> cat /tmp/apd_dump_31994 APD - Advanced PHP Debugger Trace File ------------------------------------------------------- Process Pid (31994) Trace Begun at Fri Aug 10 16:37:45 2001 ------------------------------------------------------- ( 0.000000): apd_set_session_trace called at somewhere ( 0.001482): apd_set_session_trace() returned. Elapsed (997475865.364909) ( 0.001563): getcwd() /opt/apache/htdocs/a.php:4 ( 0.001628): getcwd() returned. Elapsed (0.000065) ( 0.001819): require() /opt/apache/htdocs/a.php:6 ++ argv[0] $(??) = /tmp/a.php ( 0.002231): getcwd() /tmp/a.php:3 ( 0.002290): getcwd() returned. Elapsed (0.000059) ( 0.002375): include_once() /tmp/a.php:4 ++ argv[0] $(??) = /tmp/aa.php ( 0.003276): include_once() returned. Elapsed (0.000901) ( 0.003334): require() returned. Elapsed (0.001515) ( 0.003381): require_once() /opt/apache/htdocs/a.php:7 ++ argv[0] $(??) = /tmp/aa.php ( 0.003515): require_once() returned. Elapsed (0.000134) ( 0.003564): include() /opt/apache/htdocs/a.php:8 ++ argv[0] $(??) = /tmp/b.php ( 0.003792): include() returned. Elapsed (0.000228) ( 0.018341): RSHUTDOWN called - end of trace ------------------------------------------------------- Process Pid (31994) Trace Ended at Fri Aug 10 16:37:45 2001 -------------------------------------------------------APD propose aussi d'autres fonctions comme, par exemple, apd_callstack() qui permet de dumper la pile à tout instant.
APD n'est donc pas un debuggeur comme les autres. Mais il peut s'avérer bien utile et parfaitement complémentaire des solutions déjà existantes.
Rappelons qu'APD est encore en phase de développement (version 0.1), et qu'il peut s'avérer incompatible avec d'autres extensions. Enfin, précisons qu'APD est distribué sous licence QPL.
APD
APC
DBG







Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Vous pouvez soumettre un commentaire en remplissant le formulaire ci-dessous. Toutes les contributions font l'objet d'une étape de modération par notre équipe.
Le code HTML dans le commentaire sera affiché comme du texte, les adresses internet seront converties automatiquement.