Пошаговая инструкция: как выполнить подключение Xdebug для устранения неполадок с клиентской IDE - PullRequest
25 голосов
/ 17 февраля 2012

ФОН

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

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

ПРОБЛЕМА

Соединение с клиентской рабочей станцией не работает, и трудно определить причину, поскольку происходит сбой в нескольких IDE.

ВОПРОС

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

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

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

  • SSH на веб-хосте и попробуйте связаться с клиентом:

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

  • Проверка настроек iptables на хосте linux
  • Проверка аппаратного брандмауэра б / т клиента и хоста

ЗАДАЧА

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

Ответы [ 4 ]

13 голосов
/ 22 февраля 2012

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

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

10 голосов
/ 21 января 2013

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

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

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 здесь .
Дополнительная справка: Как проверить установку xdebug .
К сожалению, утилита debugclient предоставляется только в виде исходного кода, поэтому вы должны собрать исполняемый файл самостоятельно; это можно сделать как в Linux (см. INSTALL ), так и в Windows (в Visual Studio - см. debugclient.dsp ).
XAMPP включает скомпилированную версию в xampp/php/debugclient.exe.

6 голосов
/ 24 января 2013

Netbeans имеет очень подробную документацию, которая также описывает способы устранения таких проблем:

http://wiki.netbeans.org/HowToConfigureXDebug

5 голосов
/ 15 декабря 2014

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

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

...