2010-07-20 18 views
5

Tengo Xdebug 2.1 instalado, y corriendo con PHP 5.2.13. Se puede conectar con éxito a varios clientes DBGP (es decir, el xdebug.remote_log muestra la comunicación de ida y vuelta, y los clientes mismos también muestran la conexión entrante), pero no se detiene en los puntos de interrupción. He intentado NetBeans, MacGDBp y también la línea de comandos debugclient incluida con Xdebug.Xdebug se conecta con éxito a los clientes de DBGP, pero no se detendrá en los puntos de interrupción

Un intercambio típica se parece a:

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 intenta establecer puntos de interrupción, y estos son reconocidos por 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> 

Sin embargo, Xdebug todavía se niega a parar!

Respuesta

7

Esto parece ocurrir si tiene Xdebug han cargado como un extension (es decir extension=xdebug.so) en la configuración de PHP en lugar de un zend_extension (es decir zend_extension=/usr/lib/php5/20060613+lfs/xdebug.so).

Asegúrese de que usted no tiene una línea extension=xdebug.so en cualquier lugar en su configuración PHP, incluso si usted es bastante seguro de que está utilizando zend_extension. Por ejemplo, si tiene zend_extension en /etc/php5/conf.d/xdebug.ini, esto bien puede ser reemplazado por extension en /etc/php5/apache2/php.ini. Si este es el caso, nada se quejará, ¡y phpinfo() informará diligentemente que Xdebug está cargado! (Xdebug 2.1 hace emitir una señal de aviso pequeña phpinfo() cuando se carga como una extensión, pero las versiones anteriores no hacer nada.)

+0

Guau, esto realmente me salvó después de obtener un comportamiento extraño configurando la depuración remota con MacGDBP. Pude ver que las conexiones fueron exitosas en xdebug.remote_log, y el cliente estaba recibiendo conexiones, pero las conexiones se estaban descartando rápidamente. No hubo salida en el cliente tampoco. Cambió "extension = xdebug.so" como sugirió y todo funciona muy bien. – milesw

+0

Usted señor hizo mi día. Si pudiera, votaría mil veces más. – Bgi

0

debe agregar el ruta completa al archivo xdebug.so, incluso cuando se coloca en la carpeta php/modules/, como zend_extension no se ve en esta carpeta de forma predeterminada.

Si tiene una línea exension=xdebug.so, xdebug se cargará pero no se detendrá en los puntos de interrupción (me gana por qué).

Extracción todo exension=xdeabug.so (incluso desde el archivo cli ini, que también carga) y añadiendo el zend_extension va a resolver el problema.

+0

esto simplemente repita todo lo que dice @mjs ... Una respuesta a una pregunta que tiene 2 años debería ser mejor que esto. –

+0

Estaba aclarando que debe usar la ruta completa, dice "zend_extension =/usr/lib/php5/20060613 + lfs/xdebug.so", pero supuse que utilizó esta ruta porque tenía una versión compilada allí o lo que sea, como puse el xdebug.so en la carpeta php/modules, no puse la ruta completa (como lo hace con la directiva "extensión") y eso no funcionó. – maxidirienzo

0

¡Si los archivos php se colocan en la carpeta de enlace simbólico, XDebug funcionará con la ruta de la carpeta de origen en lugar de la ruta de la carpeta de enlace simbólico!

Así que para activar los puntos de interrupción se debe configurar asignaciones de ruta en su IDE para carpetas y archivos

0

enlace simbólico que conozco que esto ha sido contestada, pero me encontré con el mismo problema sólo quiero ofrecer mi respuesta si alguien más se ejecuta a través esta. Accidentalmente omití un valor de caso en mis rutas que aún me permitía conectarme y ejecutar el depurador, pero no se detenía en mis puntos de interrupción. No me di cuenta hasta la frustración, así que solo quiero que la gente sepa que esa también podría ser una posibilidad.

Cuestiones relacionadas