2012-02-17 1 views
23

ФОНШаг за шагом: Как сделать Xdebug подключение к устранению неполадок клиента IDE

Использование Xdebug с PHP и Komodo IDE и Eclipse PDT.

Xdebug установлен на сервере и работает нормально. Это подтверждается тем, что команды кода Xdebug работают должным образом, когда они вставлены в файлы PHP на сервере.

ПРОБЛЕМА

Подключение к рабочей станции клиента не работает, и трудно определить, почему, потому что он терпит неудачу с несколькими Иды.

ВОПРОС

Было бы неплохо иметь контрольный шаг за шагом, чтобы устранить неисправность случай, когда вы знаете, установлена ​​и работает на сервере Xdebug, но клиент не подключается.

Может ли кто-нибудь помочь в дополнении к этому, чтобы составить исчерпывающий список вопросов по устранению неполадок?

В частности, существует ли какой-либо способ, чтобы сетевой трафик достигал клиента и правильно ли он был отформатирован так, как IDE ожидает увидеть данные?

  • SSH в веб-хостинга и попытаться достичь клиента:

    • может принять клиент рич вообще? (ping -c 5 xxx.xxx.xxx.xxx)
    • может разместить порт достижений 9000? (nmap -p 9000 xxx.xxx.xxx.xxx)
    • если вышеприведенные два успеха, каков должен быть выход?
    • Если вышеприведенные два отказа, какой следующий шаг по устранению неполадок?
  • Проверьте настройки программного брандмауэра на клиенте

  • Проверьте настройки IPTables на Linux хосте
  • Проверка аппаратного брандмауэра B/T-клиент и хост

ЗАДАЧА

Цель состоит в том, чтобы найти какое-то решение, когда человек на машине-клиенте может хотя бы подтвердить, что что-то достигает клиента без необходимости определять, является ли IDE проблемой, поскольку IDE - это еще один уровень сложности, который может представлять проблемы.

+2

Это то, что я определенно хочу включить в документацию Xdebug. Я думаю, что было бы лучше, если бы многие люди сотрудничали в этом, поэтому я создал файл в репозитории xdebug.org github (https://github.com/derickr/xdebug.org/blob/master/html/docs /tutorials/troubleshooting.rest) для сбора подсказок. – Derick

+0

Вы упомянули, что 'xdebug' установлен, потому что команды работают. Моя догадка в том, что xdebug включен только для php-cli, а не для php для apache ... можете ли вы подтвердить, что это так? – Khez

+0

Вопросы, относящиеся: 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

ответ

13

Это то, что я определенно хочу включить в документацию Xdebug. Я думаю, что было бы лучше, если бы многие люди сотрудничали в этом, поэтому я создал файл в репозитории gdeub xdebug.org (https://github.com/derickr/xdebug.org/blob/master/html/docs/tutorials/troubleshooting.rest) для сбора советов. Не стесняйтесь развиваться и расширяться!

На стороне Xdebug, в следующей версии (2.2), он уже сбрасывает свой xdebug.удаленный_log файл несколько дополнительных диагностических средств, например, было ли оно пытаться подключиться и было ли соединение принято или отклонено.

10

Вы можете использовать утилиту debugclient, чтобы определить, может ли клиент принимать соединения XDebug, как вы можете прочитать в Xdebug documentation:

Перед тем, как начать свой скрипт вам нужно будет сообщить клиенту, что ему могут получать отладочные соединения, пожалуйста, обратитесь к документации конкретного клиента о том, как это сделать. Чтобы использовать связанный клиент , просто запустите его после компиляции и установки. Вы можете запустить его с помощью с запуском «debugclient». Если вы хотите использовать командный набор GDB для отладки ваших сценариев, убедитесь, что вы используете debugclient, как в комплекте с Xdebug 1.3, так как пакет, связанный с Xdebug 2, работает только с набором команд DBGp. Когда debugclient начинает он будет показывать следующую информацию и затем ожидает до тех пор, пока соединение не будет инициирован сервером отладки:

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

После установления соединения на выходе сервера отладки показано:

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) 

Вы можете найти более подробную информацию о протоколе инициализации Xdebug 2 here.
Дополнительная информация: Howto check xdebug installation.
К сожалению, утилита debugclient предоставляется только в исходной форме, поэтому вам нужно самостоятельно создать исполняемый файл; это можно сделать либо в Linux (см. INSTALL), так и в Windows (с Visual Studio - см. debugclient.dsp).
XAMPP содержит скомпилированную версию в xampp/php/debugclient.exe.

5

пользователей Windows, отключить брандмауэр, а затем повторите попытку. Если он работает, разрешите Java (TM) платформу SE с помощью брандмауэра, затем включите его снова. Все будет хорошо!

Спасибо за команды, они были очень полезны при отладке.