2012-02-17 12 views
23

TŁOKrok po kroku: Jak zrobić Xdebug rozwiązywania problemów połączenie IDE klienta

Korzystanie z PHP i XDebug Komodo IDE i Eclipse PDT.

Xdebug jest zainstalowany na serwerze i działa poprawnie. Jest to potwierdzone, ponieważ polecenia kodu Xdebug działają zgodnie z oczekiwaniami po wstawieniu do plików PHP na serwerze.

PROBLEM

Podłączanie do stacji roboczej klienta nie działa, i trudno jest ustalić, dlaczego, ponieważ nie z wieloma IDE.

PYTANIE

Byłoby miło mieć listę kontrolną krok po kroku w celu rozwiązania sprawy, gdzie wiesz Xdebug jest zainstalowany i działa na serwerze, ale klient nie łączy.

Czy ktoś może pomóc w uzupełnieniu tego, aby utworzyć kompleksową listę kontrolną rozwiązywania problemów?

W szczególności, czy istnieje jakiś prosty sposób, aby upewnić się, że ruch sieciowy dociera do klienta i jest poprawnie sformatowany w taki sposób, w jaki IDE spodziewa się zobaczyć dane?

  • SSH do hostingowego i starają się dotrzeć do klienta:

    • może obsługiwać klienta zasięg w ogóle? (ping -c 5 xxx.xxx.xxx.xxx)
    • może obsługiwać port zasięgu 9000? (nmap -p 9000 xxx.xxx.xxx.xxx)
    • jeśli powyższe dwa powiodły się, jaki powinien być wynik?
    • jeśli powyższe dwa błędy nie powiodą się, jaki jest następny krok rozwiązywania problemów?
  • Sprawdź ustawienia zapory oprogramowania opartego na kliencie

  • Sprawdź ustawienia iptables na hoście linux
  • Sprawdź firewall sprzętowy B/T klienta i hosta

CEL

Celem jest znalezienie rozwiązania, w którym osoba na komputerze klienta może przynajmniej potwierdzić, że coś, co dociera do klienta bez konieczności określania, czy IDE jest problemem, ponieważ IDE to kolejny poziom złożoności, który może powodować problemy.

+2

Jest to coś, co zdecydowanie chciałbym włączyć do dokumentacji Xdebug. Myślę, że najlepiej by było, gdyby wielu ludzi współpracowało nad tym, więc utworzyłem plik w repozytorium github xdebug.org (https://github.com/derickr/xdebug.org/blob/master/html/docs /tutorials/troubleshooting.rest), aby zbierać napiwki. – Derick

+0

Wspomniałeś, że 'xdebug' jest zainstalowany, ponieważ polecenia działają. Moje przeczucie polega na tym, że xdebug jest włączony tylko dla php-cli, a nie php dla apache ... czy możesz to potwierdzić? – Khez

+0

Pytania pokrewne: 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- ustanowienie-połączenie-z -netbeans – Kzqai

Odpowiedz

13

Jest to coś, co zdecydowanie chciałbym włączyć do dokumentacji Xdebug. Myślę, że najlepiej by było, gdyby wielu ludzi współpracowało nad tym, więc utworzyłem plik w repozytorium github xdebug.org (https://github.com/derickr/xdebug.org/blob/master/html/docs/tutorials/troubleshooting.rest), aby zbierać napiwki. Zapraszam do rozwidlenia i przedłużenia!

Na stronie Xdebug w nadchodzącej wersji (2.2) to już wysypisk w XDebug.Plik remote_log zawiera kilka dodatkowych narzędzi diagnostycznych, takich jak próba połączenia i to, czy połączenie zostało zaakceptowane czy odrzucone.

10

Można użyć narzędzia debugclient celu ustalenia, czy klient może odbierać połączenia Xdebug, jak można przeczytać w Xdebug documentation:

Przed uruchomieniem skryptu należy poinformować klienta, że ​​to można odbierać połączenia debugowania, zapoznaj się z dokumentacją klienta dla konkretnego klienta, jak to zrobić. Aby skorzystać z dołączonego klienta , po prostu uruchom go po skompilowaniu i zainstalowaniu. Możesz uruchomić go przez z uruchomionym "debugclient". Jeśli chcesz użyć zestawu komend GDB do debugowania swoich skryptów, upewnij się, że używasz debugclienta w pakiecie z Xdebugem 1.3, ponieważ ten w pakiecie z Xdebug 2 działa tylko z zestawem poleceń DBGp. Gdy debugclient zaczyna pokaże następujące informacje i następnie czeka, aż połączenie jest inicjowane przez serwer debug:

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

Po nawiązaniu połączenia wyjście debugowania serwera jest pokazane:

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) 

można znaleźć więcej informacji na temat protokołu Xdebug 2 inicjalizacji here.
Dalsze odniesienia: Howto check xdebug installation.
Niestety narzędzie debugclient dostarczane jest tylko w formie źródłowej, więc musisz sam zbudować plik wykonywalny; można to zrobić na Linuksie (patrz INSTALL) i Windows (z Visual Studio - patrz debugclient.dsp).
XAMPP zawiera skompilowaną wersję w xampp/php/debugclient.exe.

5

użytkownicy Windows wyłączyć zaporę, a następnie spróbuj ponownie. Jeśli to działa, zezwól na Java (TM) Platform SE binarną przez zaporę ogniową, a następnie włącz ją ponownie. Będzie działać dobrze!

Dziękuję za polecenia, były bardzo przydatne podczas debugowania.

Powiązane problemy