2012-02-17 11 views
23

SFONDOStep-by-step: Come fare Xdebug collegamento per la risoluzione dei problemi del cliente IDE

Utilizzando Xdebug con PHP e Komodo IDE, ed Eclipse PDT.

Xdebug è installato sul server e funziona correttamente. Ciò è confermato perché i comandi del codice Xdebug funzionano come previsto quando vengono inseriti nei file PHP sul server.

PROBLEMA

Collegamento alla workstation client non funziona, ed è difficile da determinare perché, perché non riesce con più IDE.

DOMANDA

Sarebbe bello avere una lista di controllo passo-passo per risolvere il caso in cui si conosce Xdebug è installato e funzionante sul server, ma il client non si connette.

Qualcuno può contribuire ad aggiungere a questo per fare una lista di controllo completa risoluzione dei problemi?

In particolare, esiste un modo per garantire che il traffico di rete stia raggiungendo il client e sia correttamente formattato nel modo in cui l'IDE si aspetta di vedere i dati?

  • SSH in host web e cercare di raggiungere il cliente:

    • possono ospitare cliente portata a tutti? (ping -c 5 xxx.xxx.xxx.xxx)
    • può ospitare la porta di accesso 9000? (nmap -p 9000 xxx.xxx.xxx.xxx)
    • se i due precedenti riescono, quale dovrebbe essere l'uscita?
    • se i due precedenti non riescono, qual è la prossima fase di risoluzione dei problemi?
  • Verificare impostazioni del firewall software basato su client

  • verificare le impostazioni di iptables su host Linux
  • Verificare firewall hardware b/cliente t e conduttore

OBIETTIVO

L'obiettivo è trovare una soluzione in cui la persona sul computer client possa almeno confermare che qualcosa sta raggiungendo il client senza dover determinare se l'IDE è il problema, dal momento che IDE è un altro livello di complessità che potrebbe introdurre problemi.

+2

Questo è qualcosa che vorrei assolutamente includere nella documentazione di Xdebug. Penso che sarebbe meglio che molte persone collaborassero su questo, quindi ho creato un file nel repository github di xdebug.org (https://github.com/derickr/xdebug.org/blob/master/html/docs /tutorials/troubleshooting.rest) per raccogliere suggerimenti. – Derick

+0

Hai menzionato che 'xdebug' è installato perché i comandi funzionano. La mia impressione è che xdebug sia abilitato solo per php-cli e non php per apache ... puoi confermare che questo è il caso? – Khez

+0

Domande correlate: 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

risposta

13

Questo è qualcosa che vorrei assolutamente includere nella documentazione di Xdebug. Penso che sarebbe meglio che molte persone collaborassero su questo, quindi ho creato un file nel repository github xdebug.org (https://github.com/derickr/xdebug.org/blob/master/html/docs/tutorials/troubleshooting.rest) per raccogliere suggerimenti. Sentiti libero di porgere ed estendere!

Sul lato Xdebug, nella versione imminente (2.2) già esegue il dump nel suo xdebug.file remote_log un paio di diagnostica extra come se ha provato a connettersi e se la connessione è stata accettata o negata.

10

È possibile utilizzare l'utilità debugclient per determinare se il cliente può ricevere connessioni Xdebug, come si può leggere nel Xdebug documentation:

Prima di iniziare lo script è necessario dire al vostro cliente che è possibile ricevere le connessioni di debug, fare riferimento alla documentazione di il client specifico su come eseguire questa operazione. Per utilizzare il client in bundle , avviarlo semplicemente dopo averlo compilato e installato. Puoi avviarlo con con "debugclient". Se si desidera utilizzare il set di comandi GDB per eseguire il debug degli script , assicurarsi di utilizzare un debugclient come in bundle con Xdebug 1.3 come quello in bundle con Xdebug 2 funziona solo con il set di comandi DBGp. Quando il debugclient inizia mostrerà le seguenti informazioni e attende poi finché una connessione viene iniziata dal server di debug:

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

Dopo la connessione viene fatta l'uscita del server di debug è mostrato:

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) 

potete trovare ulteriori informazioni sul Xdebug 2 inizializzazione del protocollo here.
Un ulteriore riferimento: Howto check xdebug installation.
Sfortunatamente l'utilità debugclient viene fornita solo nel modulo di origine, quindi è necessario creare l'eseguibile autonomamente; questo può essere fatto sia su Linux (vedi) e Windows (con Visual Studio - vedi debugclient.dsp).
XAMPP include una versione compilata in xampp/php/debugclient.exe.

5

utenti Windows disattivare il firewall e riprovare. Se funziona, consentire il binario della piattaforma Java (TM) SE tramite firewall, quindi abilitarlo nuovamente. Funzionerà benissimo!

Grazie per i comandi, sono stati molto utili per il debug.

Problemi correlati