Je pense que c'est une excellente question! Lorsque vous ne savez pas comment aborder le débogage PHP, vous ne savez même pas comment formuler votre question, vous ne savez pas comment être plus précis que cela. Donc, il peut ne pas obéir aux règles de Stack, mais cela nous aide beaucoup, débutants, beaucoup!
Mihaela
1
à partir de php5.4 a introduit un nouveau débogueur d'interface de ligne de commande appelé phpdbg ( phpdbg.com ). PHP5.6 sera livré avec phpdbg par défaut.
Ganesh Patil
1
Avez-vous déjà entendu parler de XDebug? :)
Pratik
Réponses:
145
Essayez Eclipse PDT pour configurer un environnement Eclipse qui possède des fonctionnalités de débogage comme vous l'avez mentionné. La possibilité d'entrer dans le code est une bien meilleure façon de déboguer que l'ancienne méthode de var_dump et d'imprimer à différents points pour voir où votre flux se passe mal. Quand tout le reste échoue et que je n'ai que SSH et vim, je trouve var_dump()/ die()pour trouver où le code va vers le sud.
Vous devez utiliser cette fonction: kill ($ data) {die (var_dump ($ data)); } Il enregistre en tapant 10 caractères, la meilleure fonction que j'ai jamais écrite tbh :)
Le plugin DBGp ne fonctionne pas avec la version actuelle de notepad ++ / xdebug et il n'est pas prévu de le corriger. Vous pouvez voir ma discussion avec le créateur lié ici
Joe
26
XDebug est essentiel pour le développement. Je l'installe avant toute autre extension. Il vous donne des traces de pile sur toute erreur et vous pouvez activer facilement le profilage.
Pour un aperçu rapide de l'utilisation d'une structure de données var_dump(). Ne l'utilisez pas print_r()car vous devrez l'entourer <pre>et il n'imprimera qu'une seule var à la fois.
<?php var_dump(__FILE__, __LINE__, $_REQUEST);?>
Pour un véritable environnement de débogage, le meilleur que j'ai trouvé est Komodo IDE mais cela coûte $$.
PhpEd est vraiment bon. Vous pouvez entrer / sortir / sortir des fonctions. Vous pouvez exécuter du code ad hoc, inspecter des variables, modifier des variables. C'est étonnant.
J'ai utilisé PhpEd et je n'ai pas de mots aimables pour cela par rapport à un véritable IDE comme NetBeans ou Eclipse, et ce commentaire n'ajoute rien d'utile à la question. -1
siliconrockstar
J'ai essayé la plupart des IDE (y compris Zend, NetBeans et Eclipse) avant d'acheter PhpED Professional car c'était le meilleur d'un mile et demi. C'était il y a quelques années, donc les autres se sont peut-être améliorés depuis, mais à l'époque la plupart d'entre eux étaient terriblement lents car ils étaient écrits en Java. Je ne comprends pas comment quelqu'un peut avoir «pas de mots gentils pour ça» quand (pour moi) c'était si clairement le meilleur, la décision était une évidence.
lm713
17
1) J'utilise print_r (). Dans TextMate, j'ai un extrait de «pré» qui se développe comme suit:
echo "<pre>";
print_r();
echo "</pre>";
2) J'utilise Xdebug, mais je n'ai pas réussi à faire fonctionner l'interface graphique sur mon Mac. Il imprime au moins une version lisible de la trace de pile.
Je suis sûr que vous voulez dire écho "</pre>"; à la fin cependant.
altermativ
9
Vous pouvez également passer «true» à la fonction pour qu'elle renvoie la chaîne. Cela signifie que vous pouvez le faire:echo '<pre>', print_r($var, true), '</pre>';
DisgruntledGoat
16
J'ai utilisé le Zend Studio (5.5) avec Zend Platform . Cela donne un débogage correct, des points d'arrêt / un dépassement du code, etc., bien qu'à un prix.
En toute honnêteté, une combinaison de print et print_r () pour imprimer les variables. Je sais que beaucoup préfèrent utiliser d'autres méthodes plus avancées mais je trouve que c'est la plus simple à utiliser.
Je dirai que je n'ai pas vraiment apprécié cela jusqu'à ce que je fasse de la programmation sur microprocesseur chez Uni et que je n'ai pas pu l'utiliser même.
Je suis heureux que vous ayez mentionné print ainsi que print_r, j'utilise une impression de base pour voir si le code a été exécuté à un certain point, ce qui aide à isoler le problème.
Brad
J'utilise à la fois print et var_dump (). J'utilise print pour afficher les messages et informations de débogage et var_dump pour indiquer l'état des variables au fur et à mesure que les choses progressent.
Joshua K
14
Xdebug , de Derick Rethans, est très bon. Je l'ai utilisé il y a quelque temps et j'ai trouvé que ce n'était pas si facile à installer. Une fois que vous avez terminé, vous ne comprendrez pas comment vous vous en sortez sans :-)
Il y a un bon article sur Zend Developer Zone (l'installation sur Linux ne semble pas plus facile) et même un plugin Firefox , que je n'ai jamais utilisé.
Ce n'est pas seulement une installation frustrante. Configurer Xdebug pour fonctionner avec Eclipse peut être un cauchemar. J'ai pu installer Xdebug sur CentOS 5 mais EclipsePDT + Xdebug ne veulent pas coopérer :(
Jahangir
11
J'utilise Netbeans avec XDebug. Consultez-le sur son site Web pour obtenir des documents sur la façon de le configurer.
http://php.netbeans.org/
Le module complémentaire est essentiel lorsque vous déboguez des projets MVC, car la façon normale dont XDebug s'exécute dans Netbeans consiste à enregistrer la session dbug via l'URL. Avec le module complémentaire installé dans FireFox, vous devez définir les propriétés de votre projet Netbeans -> Exécuter la configuration -> Avancé et sélectionner "Ne pas ouvrir le navigateur Web". Vous pouvez maintenant définir vos points d'arrêt et démarrer la session de débogage avec Ctrl-F5 comme d'habitude. . Ouvrez FireFox et cliquez avec le bouton droit sur l'icône du module complémentaire dans le coin inférieur droit pour démarrer la surveillance des points d'arrêt. Lorsque le code atteint le point d'arrêt, il s'arrête et vous pouvez inspecter vos états de variable et votre pile d'appels.
La mise en mémoire tampon de sortie est très utile si vous ne voulez pas gâcher votre sortie. Je le fais dans un one-liner que je peux commenter / décommenter à volonté
Pour les problèmes vraiment graves qui prendraient trop de temps à utiliser print_r / echo pour comprendre que j'utilise la fonction de débogage de mon IDE (PhpEd). Contrairement aux autres IDE que j'ai utilisés, PhpEd ne nécessite pratiquement aucune configuration. la seule raison pour laquelle je ne l'utilise pas pour les problèmes que je rencontre, c'est qu'il est douloureusement lent. Je ne suis pas sûr que la lenteur soit spécifique à PhpEd ou à n'importe quel débogueur php. PhpEd n'est pas gratuit mais je pense qu'il utilise de toute façon l'un des débogueurs open source (comme XDebug mentionné précédemment). L'avantage avec PhpEd, encore une fois, est qu'il ne nécessite aucune configuration que j'ai trouvée très fastidieuse dans le passé.
Le débogueur PHPEd est en fait écrit par le même gars qui a écrit PHPEd et je suis sûr qu'il n'est pas open source. Au moins, PHPEd n'est pas fourni avec la source, mais au lieu de cela compilé .so et .dll.
Artem Russakovskii du
4
Le débogage manuel est généralement plus rapide pour moi - var_dump()et debug_print_backtrace()sont tous les outils dont vous avez besoin pour armer votre logique.
Eh bien, dans une certaine mesure, cela dépend de l’orientation vers le sud. C'est la première chose que j'essaie d'isoler, puis j'utiliserai echo / print_r () si nécessaire.
NB: Vous savez que vous pouvez passer true comme deuxième argument à print_r () et cela retournera la sortie au lieu de l'imprimer? Par exemple:
Je viens d'envelopper cela dans une fonction appelée débogage. Alors je peux faire le débogage ($ var);
jdelator
3
J'utilise souvent CakePHP lorsque Rails n'est pas possible. Pour déboguer les erreurs, je trouve généralement leerror.log dans le dossier tmp et le queue dans le terminal avec la commande ...
tail -f app/tmp/logs/error.log
Cela vous donne une boîte de dialogue en cours d'exécution à partir de ce qui se passe, ce qui est assez pratique, si vous voulez lui envoyer quelque chose en milieu de code, vous pouvez l'utiliser.
$this->log('xxxx');
Cela peut généralement vous donner une bonne idée de ce qui se passe / mal.
Komodo IDE fonctionne bien avec xdebug, même pour le débogage de remore. Il nécessite un minimum de configuration. Tout ce dont vous avez besoin est une version de php que Komodo peut utiliser localement pour parcourir le code sur un point d'arrêt. Si vous avez le script importé dans le projet komodo, vous pouvez définir des points d'arrêt avec un clic de souris exactement comme vous le définiriez dans eclipse pour déboguer un programme java. Le débogage à distance est évidemment plus difficile à faire fonctionner correctement (vous devrez peut-être mapper l'URL à distance avec un script php dans votre espace de travail) qu'une configuration de débogage locale qui est assez facile à configurer si vous êtes sur un MAC ou un bureau Linux .
Il existe de nombreuses techniques de débogage PHP qui peuvent vous faire économiser d'innombrables heures lors du codage. Une technique de débogage efficace mais basique consiste simplement à activer le rapport d'erreurs. Une autre technique légèrement plus avancée consiste à utiliser des instructions d'impression, ce qui peut aider à identifier des bogues plus insaisissables en affichant ce qui se passe réellement à l'écran. PHPeclipse est un plug-in Eclipse qui peut mettre en évidence des erreurs de syntaxe courantes et peut être utilisé en conjonction avec un débogueur pour définir des points d'arrêt.
j'utilise zend studio pour eclipse avec le débogueur intégré. C'est toujours lent comparé au débogage avec eclipse pdt avec xdebug. Espérons qu'ils résoudront ces problèmes, la vitesse s'est améliorée par rapport aux versions récentes, mais le dépassement prend encore 2-3 secondes. La barre d'outils zend firefox facilite vraiment les choses (débogage page suivante, page actuelle, etc.). Il fournit également un profileur qui évaluera votre code et fournira des graphiques circulaires, le temps d'exécution, etc.
La plupart des bogues peuvent être trouvés facilement par simple var_dump ajoutant certaines des variables clés, mais cela dépend évidemment du type d'application que vous développez.
Pour des algorithmes plus complexes, les fonctions step / breakpoint / watch sont très utiles (si ce n'est pas nécessaire)
Le débogueur interactif PHP étape par étape implémenté comme un module SAPI qui peut vous donner un contrôle complet sur l'environnement sans impact sur la fonctionnalité ou les performances de votre code. Il vise à être une plate-forme de débogage légère, puissante et facile à utiliser pour PHP 5.4+ et il est livré avec PHP 5.6.
Ensuite, toutes les erreurs vous donneront des informations telles que la trace, le contexte du code, les arguments de fonction, les variables de serveur, etc. Par exemple:
Les fonctionnalités incluent:
trivial à utiliser, c'est juste un fichier
erreurs affichées dans le navigateur pour les requêtes normales et ajaxy
Les requêtes AJAX sont suspendues, vous permettant de les réexécuter automatiquement
rend les erreurs aussi strictes que possible (encourage la qualité du code et tend à améliorer les performances)
extraits de code sur toute la trace de la pile
fournit plus d'informations (telles que les signatures de fonctions complètes)
corrige certains messages d'erreur qui sont tout simplement faux
coloration syntaxique
semble joli!
personnalisation
allumer et éteindre manuellement
exécuter des sections spécifiques sans rapport d'erreur
ignorer les fichiers vous permettant d'éviter de mettre en évidence le code dans votre trace de pile
fichiers d'application; ceux-ci sont prioritaires en cas d'erreur!
Si votre système prend en charge le traçage dynamique DTrace (installé par défaut sur OS X) et que votre PHP est compilé avec les sondes DTrace activées ( --enable-dtrace) qui devraient être par défaut, cette commande peut vous aider à déboguer le script PHP sans délai:
Sur une autre course terminal: php -r "phpinfo();".
Pour tester cela, vous pouvez aller dans n'importe quel docroot avec index.phpet exécuter le serveur PHP intégré en:
php -S localhost:8080
Après cela, vous pouvez accéder au site à http: // localhost: 8080 / (ou choisir le port qui vous convient). De là, accédez à certaines pages pour voir la sortie de trace.
Remarque: Dtrace est disponible sur OS X par défaut, sous Linux, vous avez probablement besoin de dtrace4linux ou recherchez d'autres alternatives .
Vous pouvez également vérifier le suivi SystemTap en installant le package de développement SystemTap SDT (par exemple yum install systemtap-sdt-devel).
Voici un exemple de script ( all_probes.stp) pour tracer tous les points de sonde statiques PHP principaux pendant toute la durée d'un script PHP en cours d'exécution avec SystemTap:
+1 pour print_r (). Utilisez-le pour vider le contenu d'un objet ou d'une variable. Pour le rendre plus lisible, faites-le avec une balise pre afin que vous n'ayez pas besoin d'afficher la source.
echo '<pre>';
print_r($arrayOrObject);
Aussi var_dump ($ thing) - c'est très utile pour voir le type de sous-éléments
En fonction du problème, j'aime une combinaison de error_reporting (E_ALL) mélangée à des tests d'écho (pour trouver la ligne / le fichier incriminé, l'erreur s'est produite au départ; vous SAVEZ que ce n'est pas toujours la ligne / le fichier php qui vous le dit?), La correspondance des accolades IDE (pour résoudre les problèmes "Erreur d'analyse: erreur de syntaxe, $ end inattendu") et print_r (); sortie; dumps (les vrais programmeurs voient la source; p).
Vous ne pouvez pas non plus battre phpdebug (vérifier sourceforge) avec "memory_get_usage ();" et "memory_get_peak_usage ();" pour trouver les zones problématiques.
Les débogueurs intégrés où vous pouvez regarder les valeurs de changement de variable pendant que vous parcourez le code sont vraiment cool. Ils nécessitent cependant une configuration logicielle sur le serveur et une certaine quantité de configuration sur le client. Les deux nécessitent un entretien périodique pour rester en bon état de fonctionnement.
Un print_r est facile à écrire et est garanti pour fonctionner dans n'importe quelle configuration.
Habituellement, je trouve créer une fonction de journal personnalisé capable d'enregistrer sur un fichier, de stocker des informations de débogage et finalement de réimprimer sur un pied de page commun.
Vous pouvez également remplacer la classe d'exception commune, afin que ce type de débogage soit semi-automatisé.
Réponses:
Essayez Eclipse PDT pour configurer un environnement Eclipse qui possède des fonctionnalités de débogage comme vous l'avez mentionné. La possibilité d'entrer dans le code est une bien meilleure façon de déboguer que l'ancienne méthode de var_dump et d'imprimer à différents points pour voir où votre flux se passe mal. Quand tout le reste échoue et que je n'ai que SSH et vim, je trouve
var_dump()
/die()
pour trouver où le code va vers le sud.la source
kill($data) { echo "<pre>"; var_dump($data); echo "</pre>"; exit; }
Vous pouvez utiliser Firephp un add-on pour firebug pour déboguer php dans le même environnement que javascript.
J'utilise également Xdebug mentionné plus haut pour le profilage de php.
la source
Voici mon petit environnement de débogage:
la source
assert_callcack
hehXdebug et le plugin DBGp pour Notepad ++ pour la chasse aux bogues lourds, FirePHP pour les trucs légers. Rapide et sale? Rien ne vaut dBug .
la source
XDebug est essentiel pour le développement. Je l'installe avant toute autre extension. Il vous donne des traces de pile sur toute erreur et vous pouvez activer facilement le profilage.
Pour un aperçu rapide de l'utilisation d'une structure de données
var_dump()
. Ne l'utilisez pasprint_r()
car vous devrez l'entourer<pre>
et il n'imprimera qu'une seule var à la fois.Pour un véritable environnement de débogage, le meilleur que j'ai trouvé est Komodo IDE mais cela coûte $$.
la source
PhpEd est vraiment bon. Vous pouvez entrer / sortir / sortir des fonctions. Vous pouvez exécuter du code ad hoc, inspecter des variables, modifier des variables. C'est étonnant.
la source
1) J'utilise print_r (). Dans TextMate, j'ai un extrait de «pré» qui se développe comme suit:
2) J'utilise Xdebug, mais je n'ai pas réussi à faire fonctionner l'interface graphique sur mon Mac. Il imprime au moins une version lisible de la trace de pile.
la source
echo '<pre>', print_r($var, true), '</pre>';
J'ai utilisé le Zend Studio (5.5) avec Zend Platform . Cela donne un débogage correct, des points d'arrêt / un dépassement du code, etc., bien qu'à un prix.
la source
En toute honnêteté, une combinaison de print et print_r () pour imprimer les variables. Je sais que beaucoup préfèrent utiliser d'autres méthodes plus avancées mais je trouve que c'est la plus simple à utiliser.
Je dirai que je n'ai pas vraiment apprécié cela jusqu'à ce que je fasse de la programmation sur microprocesseur chez Uni et que je n'ai pas pu l'utiliser même.
la source
Xdebug , de Derick Rethans, est très bon. Je l'ai utilisé il y a quelque temps et j'ai trouvé que ce n'était pas si facile à installer. Une fois que vous avez terminé, vous ne comprendrez pas comment vous vous en sortez sans :-)
Il y a un bon article sur Zend Developer Zone (l'installation sur Linux ne semble pas plus facile) et même un plugin Firefox , que je n'ai jamais utilisé.
la source
J'utilise Netbeans avec XDebug. Consultez-le sur son site Web pour obtenir des documents sur la façon de le configurer. http://php.netbeans.org/
la source
J'utilise Netbeans avec XDebug et le module complémentaire Easy XDebug FireFox
Le module complémentaire est essentiel lorsque vous déboguez des projets MVC, car la façon normale dont XDebug s'exécute dans Netbeans consiste à enregistrer la session dbug via l'URL. Avec le module complémentaire installé dans FireFox, vous devez définir les propriétés de votre projet Netbeans -> Exécuter la configuration -> Avancé et sélectionner "Ne pas ouvrir le navigateur Web". Vous pouvez maintenant définir vos points d'arrêt et démarrer la session de débogage avec Ctrl-F5 comme d'habitude. . Ouvrez FireFox et cliquez avec le bouton droit sur l'icône du module complémentaire dans le coin inférieur droit pour démarrer la surveillance des points d'arrêt. Lorsque le code atteint le point d'arrêt, il s'arrête et vous pouvez inspecter vos états de variable et votre pile d'appels.
la source
La mise en mémoire tampon de sortie est très utile si vous ne voulez pas gâcher votre sortie. Je le fais dans un one-liner que je peux commenter / décommenter à volonté
la source
PhpEdit a un débogueur intégré, mais je finis généralement par utiliser echo (); et print_r (); à l'ancienne !!
la source
Pour les problèmes vraiment graves qui prendraient trop de temps à utiliser print_r / echo pour comprendre que j'utilise la fonction de débogage de mon IDE (PhpEd). Contrairement aux autres IDE que j'ai utilisés, PhpEd ne nécessite pratiquement aucune configuration. la seule raison pour laquelle je ne l'utilise pas pour les problèmes que je rencontre, c'est qu'il est douloureusement lent. Je ne suis pas sûr que la lenteur soit spécifique à PhpEd ou à n'importe quel débogueur php. PhpEd n'est pas gratuit mais je pense qu'il utilise de toute façon l'un des débogueurs open source (comme XDebug mentionné précédemment). L'avantage avec PhpEd, encore une fois, est qu'il ne nécessite aucune configuration que j'ai trouvée très fastidieuse dans le passé.
la source
Le débogage manuel est généralement plus rapide pour moi -
var_dump()
etdebug_print_backtrace()
sont tous les outils dont vous avez besoin pour armer votre logique.la source
Eh bien, dans une certaine mesure, cela dépend de l’orientation vers le sud. C'est la première chose que j'essaie d'isoler, puis j'utiliserai echo / print_r () si nécessaire.
NB: Vous savez que vous pouvez passer true comme deuxième argument à print_r () et cela retournera la sortie au lieu de l'imprimer? Par exemple:
la source
J'utilise souvent CakePHP lorsque Rails n'est pas possible. Pour déboguer les erreurs, je trouve généralement le
error.log
dans le dossier tmp et le queue dans le terminal avec la commande ...Cela vous donne une boîte de dialogue en cours d'exécution à partir de ce qui se passe, ce qui est assez pratique, si vous voulez lui envoyer quelque chose en milieu de code, vous pouvez l'utiliser.
Cela peut généralement vous donner une bonne idée de ce qui se passe / mal.
la source
print_r (debug_backtrace ());
ou quelque chose comme ça :-)
la source
Komodo IDE fonctionne bien avec xdebug, même pour le débogage de remore. Il nécessite un minimum de configuration. Tout ce dont vous avez besoin est une version de php que Komodo peut utiliser localement pour parcourir le code sur un point d'arrêt. Si vous avez le script importé dans le projet komodo, vous pouvez définir des points d'arrêt avec un clic de souris exactement comme vous le définiriez dans eclipse pour déboguer un programme java. Le débogage à distance est évidemment plus difficile à faire fonctionner correctement (vous devrez peut-être mapper l'URL à distance avec un script php dans votre espace de travail) qu'une configuration de débogage locale qui est assez facile à configurer si vous êtes sur un MAC ou un bureau Linux .
la source
Nusphere est aussi un bon débogueur pour php nusphere
la source
Il existe de nombreuses techniques de débogage PHP qui peuvent vous faire économiser d'innombrables heures lors du codage. Une technique de débogage efficace mais basique consiste simplement à activer le rapport d'erreurs. Une autre technique légèrement plus avancée consiste à utiliser des instructions d'impression, ce qui peut aider à identifier des bogues plus insaisissables en affichant ce qui se passe réellement à l'écran. PHPeclipse est un plug-in Eclipse qui peut mettre en évidence des erreurs de syntaxe courantes et peut être utilisé en conjonction avec un débogueur pour définir des points d'arrêt.
et aussi utilisé
la source
Dans un environnement de production, j'enregistre les données pertinentes dans le journal des erreurs du serveur avec error_log ().
la source
j'utilise zend studio pour eclipse avec le débogueur intégré. C'est toujours lent comparé au débogage avec eclipse pdt avec xdebug. Espérons qu'ils résoudront ces problèmes, la vitesse s'est améliorée par rapport aux versions récentes, mais le dépassement prend encore 2-3 secondes. La barre d'outils zend firefox facilite vraiment les choses (débogage page suivante, page actuelle, etc.). Il fournit également un profileur qui évaluera votre code et fournira des graphiques circulaires, le temps d'exécution, etc.
la source
La plupart des bogues peuvent être trouvés facilement par simple
var_dump
ajoutant certaines des variables clés, mais cela dépend évidemment du type d'application que vous développez.Pour des algorithmes plus complexes, les fonctions step / breakpoint / watch sont très utiles (si ce n'est pas nécessaire)
la source
PHP DBG
Le débogueur interactif PHP étape par étape implémenté comme un module SAPI qui peut vous donner un contrôle complet sur l'environnement sans impact sur la fonctionnalité ou les performances de votre code. Il vise à être une plate-forme de débogage légère, puissante et facile à utiliser pour PHP 5.4+ et il est livré avec PHP 5.6.
Les fonctionnalités incluent:
Voir les captures d'écran:
Page d'accueil: http://phpdbg.com/
Erreur PHP - Meilleur rapport d'erreurs pour PHP
C'est une bibliothèque très facile à utiliser (en fait un fichier) pour déboguer vos scripts PHP.
La seule chose que vous devez faire est d'inclure un fichier comme ci-dessous (au début sur votre code):
Ensuite, toutes les erreurs vous donneront des informations telles que la trace, le contexte du code, les arguments de fonction, les variables de serveur, etc. Par exemple:
Les fonctionnalités incluent:
Page d'accueil: http://phperror.net/
GitHub: https://github.com/JosephLenton/PHP-Error
Ma fourchette (avec correctifs supplémentaires): https://github.com/kenorb-contrib/PHP-Error
DTrace
Si votre système prend en charge le traçage dynamique DTrace (installé par défaut sur OS X) et que votre PHP est compilé avec les sondes DTrace activées (
--enable-dtrace
) qui devraient être par défaut, cette commande peut vous aider à déboguer le script PHP sans délai:Donc, étant donné que l'alias suivant a été ajouté à vos fichiers rc (par exemple
~/.bashrc
,~/.bash_aliases
):vous pouvez tracer votre script avec facile à retenir alias:
trace-php
.Voici un script dtrace plus avancé, il suffit de l'enregistrer
dtruss-php.d
, de le rendre exécutable (chmod +x dtruss-php.d
) et de l'exécuter:Page d'accueil: dtruss-lamp chez GitHub
Voici une utilisation simple:
sudo dtruss-php.d
.php -r "phpinfo();"
.Pour tester cela, vous pouvez aller dans n'importe quel docroot avec
index.php
et exécuter le serveur PHP intégré en:Après cela, vous pouvez accéder au site à http: // localhost: 8080 / (ou choisir le port qui vous convient). De là, accédez à certaines pages pour voir la sortie de trace.
Remarque: Dtrace est disponible sur OS X par défaut, sous Linux, vous avez probablement besoin de dtrace4linux ou recherchez d'autres alternatives .
Voir: Utiliser PHP et DTrace sur php.net
SystemTap
Vous pouvez également vérifier le suivi SystemTap en installant le package de développement SystemTap SDT (par exemple
yum install systemtap-sdt-devel
).Voici un exemple de script (
all_probes.stp
) pour tracer tous les points de sonde statiques PHP principaux pendant toute la durée d'un script PHP en cours d'exécution avec SystemTap:Usage:
Voir: Utiliser SystemTap avec PHP DTrace Static Probes sur php.net
la source
+1 pour print_r (). Utilisez-le pour vider le contenu d'un objet ou d'une variable. Pour le rendre plus lisible, faites-le avec une balise pre afin que vous n'ayez pas besoin d'afficher la source.
Aussi var_dump ($ thing) - c'est très utile pour voir le type de sous-éléments
la source
En fonction du problème, j'aime une combinaison de error_reporting (E_ALL) mélangée à des tests d'écho (pour trouver la ligne / le fichier incriminé, l'erreur s'est produite au départ; vous SAVEZ que ce n'est pas toujours la ligne / le fichier php qui vous le dit?), La correspondance des accolades IDE (pour résoudre les problèmes "Erreur d'analyse: erreur de syntaxe, $ end inattendu") et print_r (); sortie; dumps (les vrais programmeurs voient la source; p).
Vous ne pouvez pas non plus battre phpdebug (vérifier sourceforge) avec "memory_get_usage ();" et "memory_get_peak_usage ();" pour trouver les zones problématiques.
la source
Les débogueurs intégrés où vous pouvez regarder les valeurs de changement de variable pendant que vous parcourez le code sont vraiment cool. Ils nécessitent cependant une configuration logicielle sur le serveur et une certaine quantité de configuration sur le client. Les deux nécessitent un entretien périodique pour rester en bon état de fonctionnement.
Un print_r est facile à écrire et est garanti pour fonctionner dans n'importe quelle configuration.
la source
Habituellement, je trouve créer une fonction de journal personnalisé capable d'enregistrer sur un fichier, de stocker des informations de débogage et finalement de réimprimer sur un pied de page commun.
Vous pouvez également remplacer la classe d'exception commune, afin que ce type de débogage soit semi-automatisé.
la source