2010-07-20 5 views
5

J'ai installé Xdebug 2.1 et fonctionne avec PHP 5.2.13. Il peut se connecter avec succès à plusieurs clients DBGP (c'est-à-dire que le xdebug.remote_log affiche la communication aller et retour, et les clients eux-mêmes affichent également la connexion entrante), mais il ne s'arrête pas aux points d'arrêt. J'ai essayé NetBeans, MacGDBp et aussi la ligne de commande debugclient fournie avec Xdebug.Xdebug se connecte avec succès aux clients DBGP, mais ne s'arrête pas aux points d'arrêt

Un échange typique ressemble à:

Log opened at 2010-07-20 09:33:17 
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///mnt/hgfs/htdocs/mycompany/index.php" language="PHP" protocol_version="1.0" appid="14371" idekey="macgdbp"><engine version="2.1.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2010 by Derick Rethans]]></copyright></init> 

<- status -i macgdbp 
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="status" transaction_id="macgdbp" status="starting" reason="ok"></response> 

<- step_into -i macgdbp 
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="macgdbp" status="stopping" reason="ok"></response> 

<- status -i macgdbp 
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="status" transaction_id="macgdbp" status="stopping" reason="ok"></response> 

Log closed at 2010-07-20 09:33:18 

NetBeans tente de définir des points d'arrêt, et ceux-ci sont reconnus par Xdebug:

<- breakpoint_set -i 7 -t line -s enabled -f file:///mnt/hgfs/htdocs/mycompany/index.php -n 9 
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="7" state="enabled" id="139360004"></response> 

Cependant, Xdebug refuse toujours d'arrêter!

Répondre

7

Cela semble se produire si vous avez Xdebug ont chargé en tant que extension (à savoir extension=xdebug.so) dans la configuration de PHP au lieu d'un zend_extension (à savoir zend_extension=/usr/lib/php5/20060613+lfs/xdebug.so).

Assurez-vous que vous ne disposez pas d'une ligne extension=xdebug.sopartout dans votre configuration PHP, même si vous êtes à peu près sûr que vous utilisez zend_extension. Par exemple, si vous avez zend_extension dans /etc/php5/conf.d/xdebug.ini, cela peut être remplacé par un extension dans /etc/php5/apache2/php.ini. Si tel est le cas, rien ne va se plaindre, et phpinfo() rapportera consciencieusement que Xdebug est chargé! (Xdebug 2.1 ne délivre un petit avertissement phpinfo() lorsqu'il est chargé comme une extension, mais les versions précédentes ne font rien.)

+0

Wow, cela m'a vraiment sauvé après avoir obtenu un comportement bizarre en configurant le débogage à distance avec MacGDBP. Je pouvais voir que les connexions étaient réussies dans le xdebug.remote_log, et le client recevait des connexions, mais les connexions étaient rapidement abandonnées. Il n'y avait pas de sortie dans le client non plus. Changé "extension = xdebug.so" comme vous l'avez suggéré et boom tout fonctionne magnifiquement. – milesw

+0

Vous avez fait ma journée monsieur. Si je pouvais, je voudrais un millier de fois. – Bgi

0

Vous devez ajouter le chemin complet au fichier xdebug.so, même quand il est placé dans le dossier php/modules/, comme zend_extension ne recherche pas dans ce dossier par défaut.

Si vous avez une ligne exension=xdebug.so, xdebug se chargera mais ne s'arrêtera pas aux points d'arrêt (pourquoi moi?).

La suppression de tous les fichiers exension=xdeabug.so (même à partir du fichier cli ini, qui est également chargé) et l'ajout de zend_extension permettent de résoudre le problème.

+0

cela répète juste tout ce qui est dit par @mjs ... Une réponse à une question qui a 2 ans devrait être meilleure que celle-ci. –

+0

Je venais de clarifier que vous devez utiliser le chemin complet, il dit "zend_extension =/usr/lib/php5/20060613 + lfs/xdebug.so" mais j'ai supposé qu'il utilisait ce chemin parce qu'il avait une version compilée là ou quoi que ce soit, Comme je l'ai mis xdebug.so dans le dossier php/modules, je n'ai pas mis le chemin complet (comme vous le faites avec la directive "extension") et cela n'a pas fonctionné. – maxidirienzo

0

Si les fichiers php sont placés dans le dossier symlink, XDebug fonctionnera avec le chemin du dossier source au lieu du chemin du dossier de liens symboliques!

Donc, pour activer les points d'arrêt, vous devez configurer chemin applications dans votre environnement de développement pour les dossiers des liens symboliques et les fichiers

0

Je sais que cela a été répondu, mais je suis tombé sur la même question veulent juste offrir ma réponse si quelqu'un va d'autre à travers ce. J'ai accidentellement manqué une valeur de casse dans mes chemins qui me permettait encore de me connecter et d'exécuter le débogueur mais il ne s'arrêtait pas à mes points d'arrêt. Je ne l'ai pas réalisé jusqu'à frustration beaucoup, donc je veux juste que les gens sachent que cela pourrait être une possibilité aussi.

Questions connexes