2012-02-17 8 views
23

AntecedentesPaso a paso: Cómo hacer Xdebug conexión de solución de problemas para el cliente IDE

Usando Xdebug con PHP y Komodo IDE y Eclipse PDT.

Xdebug está instalado en el servidor y funciona correctamente. Esto se confirma porque los comandos de código Xdebug funcionan como se esperaba cuando se insertan en archivos PHP en el servidor.

PROBLEMA

Conexión a la estación de trabajo cliente no está funcionando, y es difícil de determinar por qué, ya que falla con múltiples entornos de desarrollo.

PREGUNTA

Sería bueno tener una lista de comprobación paso a paso para solucionar el caso en el que sabes Xdebug está instalado y funcionando en el servidor, pero el cliente no se conecta.

¿Alguien puede ayudarlo a hacer una lista de verificación integral de solución de problemas?

Específicamente, ¿hay alguna manera escueta de asegurarse de que el tráfico de red llegue al cliente y esté formateado correctamente de la forma en que el IDE espera ver los datos?

  • SSH en alojamiento web y tratar de llegar al cliente:

    • puede alojar cliente alcance en absoluto? (ping -c 5 xxx.xxx.xxx.xxx)
    • puede host llegar al puerto 9000? (nmap -p 9000 xxx.xxx.xxx.xxx)
    • si los dos anteriores tienen éxito, ¿cuál debería ser el resultado?
    • si los dos anteriores fallan, ¿cuál es el siguiente paso de solución de problemas?
  • Verificar la configuración de servidor de seguridad basado en software en el cliente

  • comprobar la configuración de iptables en el host Linux
  • Verificar firewall de hardware b/cliente t y anfitrión

META

El objetivo es encontrar alguna solución donde la persona en la máquina del cliente pueda al menos confirmar que algo está llegando al cliente sin tener que determinar si el IDE es el problema, ya que IDE es otro nivel de complejidad que puede estar introduciendo problemas.

+2

Esto es algo que definitivamente me gustaría incluir en la documentación de Xdebug. Creo que sería mejor que muchas personas colaboren en esto, así que he creado un archivo en el repositorio de xdebug.org github (https://github.com/derickr/xdebug.org/blob/master/html/docs /tutorials/troubleshooting.rest) para recopilar consejos. – Derick

+0

Usted mencionó que 'xdebug' está instalado porque los comandos funcionan. Mi corazonada es que xdebug está habilitado solo para php-cli y no php para apache ... ¿puedes confirmar que este es el caso? – Khez

+0

Preguntas relacionadas: http://stackoverflow.com/questions/18540463/how-to-enable-xdebug-with-nginx http://stackoverflow.com/questions/11563280/php-remote-debugging-xdebug- cant-connect-to-jetbrains-php-storm-client http://stackoverflow.com/questions/1946643/why-does-xdebug-not-establish-connection-with-netbeans – Kzqai

Respuesta

13

Esto es algo que definitivamente me gustaría incluir en la documentación de Xdebug. Creo que sería mejor que muchas personas colaboren en esto, así que he creado un archivo en el repositorio de xdebug.org github (https://github.com/derickr/xdebug.org/blob/master/html/docs/tutorials/troubleshooting.rest) para recopilar sugerencias. ¡Siéntete libre de bifurcar y extender!

En el lado Xdebug, en la próxima versión (2.2) ya se vuelca en su xdebug.archivo remote_log un par de diagnósticos adicionales, como si intentó conectarse y si la conexión fue aceptada o denegada.

10

Usted puede utilizar la utilidad debugclient para determinar si el cliente puede recibir conexiones Xdebug, como se puede leer en el Xdebug documentation:

Antes de comenzar la secuencia de comandos que tendrá que decirle al cliente que puede recibir conexiones de depuración, consulte la documentación de del cliente específico sobre cómo hacer esto. Para usar el cliente incluido simplemente inícielo después de compilarlo e instalarlo. Puede iniciarlo por ejecutando "debugclient". Si desea utilizar el conjunto de comandos GDB para depurar sus scripts, asegúrese de usar un debugclient como paquete con Xdebug 1.3, ya que el que se incluye con Xdebug 2 solo funciona con el conjunto de comandos DBGp. Cuando el debugclient comienza se mostrará la siguiente información y luego espera hasta que una conexión es iniciada por el servidor de depuración:

Xdebug Simple DBGp client (0.10.0) 
Copyright 2002-2007 by Derick Rethans. 
- libedit support: enabled 
Waiting for debug server to connect. 

Después se realiza una conexión de la salida del servidor de depuración se muestra:

Connect 
<?xml version="1.0" encoding="iso-8859-1"?> 
<init xmlns="urn:debugger_protocol_v1" 
     xmlns:xdebug="http://xdebug.org/dbgp/xdebug" 
     fileuri="file:///home/httpd/www.xdebug.org/html/docs/index.php" 
     language="PHP" 
     protocol_version="1.0" 
     appid="13202" 
     idekey="derick"> 
    <engine version="2.0.0RC4-dev"><![CDATA[Xdebug]]></engine> 
    <author><![CDATA[Derick Rethans]]></author> 
    <url><![CDATA[http://xdebug.org]]></url> 
    <copyright><![CDATA[Copyright (c) 2002-2007 by Derick Rethans]]></copyright> 
</init> 
(cmd) 

puede encontrar más información sobre el protocolo de inicialización Xdebug 2 here.
Una referencia adicional: Howto check xdebug installation.
Lamentablemente, la utilidad del debugclient solo se proporciona en formato fuente, por lo que debe compilar el ejecutable usted mismo; esto se puede hacer en Linux (ver INSTALL) y Windows (con Visual Studio - ver debugclient.dsp).
XAMPP incluye una versión compilada en xampp/php/debugclient.exe.

5

usuarios de Windows desactivar el servidor de seguridad y vuelva a intentarlo. Si funciona, permita el binario de Java (TM) Platform SE a través del firewall y vuelva a habilitarlo. Funcionará bien!

Gracias por los comandos, fueron muy útiles en la depuración.

Cuestiones relacionadas