Подтвердить что ты не робот

Xdebug игнорирует точки останова

В настоящее время я пытаюсь получить Xdebug для работы на нашем сервере разработки. В качестве клиента я использую netbeans, и соединение пока работает без проблем. Но когда я пытаюсь установить точку останова в netbeans, это просто игнорируется.

И да, я уже много часов работал в Интернете, а также нашел здесь несколько вопросов, которые идеально соответствовали моему описанию: SO 1 SO 2

Но для меня это, похоже, не решает. Модуль Xdebug загружается через zend_extension = путь/в/xdebug. поэтому в

/etc/php5/conf.d/xdebug.ini

Я также посмотрел php5/apache и php5/cli php.ini, чтобы убедиться, что он не загружен с расширением = где-то там. Я также проверил "дополнительные файлы .ini", найденные phpinfo() и, похоже, нигде больше не загружен.

Выполняя php -m, я вижу загруженный модуль Xdebug в

[PHP Modules]

и в

[Zend Modules]

Не уверен, что это означает, что он по-прежнему загружен дважды, или если это так? Тем не менее, если я удаляю zend_extension=/path/to/xdebug.so из conf.d/xdebug.ini, он также больше не загружается. Поэтому я действительно предполагаю, что он загружен только там.

Если я установил параметр remote_log, увидим, что Netbeans пытается что-то установить:

<- breakpoint_set -i 452 -t line -s enabled 
   -f file:///http:/development.xxx.de/users/itsame/index.php -n 15
-> <response xmlns="urn:debugger_protocol_v1"
    xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" 
          transaction_id="452" state="enabled" id="258870001">   
    </response>

Но, похоже, это не имеет никакого эффекта (выглядит примерно так же, как и в других вопросах SO, которые я опубликовал выше. Но если я использую ручной xdebug_break() внутри php-кода, он правильно его обрабатывает.

Версия PHP - 5.2.6, а Xdebug - 2.1. Любые предложения, по которым я мог бы смотреть дальше?

4b9b3361

Ответ 1

Похоже, что с файлом, содержащим точку останова, что-то не так.

<- breakpoint_set -i 452 -t line -s enabled 
   -f file:///http:/development.xxx.de/users/itsame/index.php -n 15 ->

У меня была аналогичная проблема с Eclipse. Только мои контрольные точки в файле индекса были приняты, а контрольные точки в других файлах, включенных в индекс, были проигнорированы.

Я посмотрел в файле remote_log и увидел следующее:

<- breakpoint_set -i 260 -t line 
   -f file:///~jeroen/workspace/fieg/wp-content/plugins/fieg/fieg.php -n 22-> 
<response xmlns="urn:debugger_protocol_v1" 
   xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" 
   transaction_id="260" id="48060002"></response>

Я заметил, что путь для точки останова был неправильным. Оказалось, что мне нужно настроить Port Mapping в Eclipse. После установки правильного сопоставления точки останова начали работать. Также мой remote_log теперь показывает правильный путь:

<- breakpoint_set -i 333 -t line 
   -f file:///Users/jeroen/Workspace/fieg/wp-content/plugins/fieg/fieg.php -n 12->     
<response xmlns="urn:debugger_protocol_v1" 
   xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" 
   transaction_id="333" id="48080005"></response>

Я не уверен, есть ли эквивалент конфигурации отображения портов Eclipse в Netbeans, но, надеюсь, я указал вам в хорошем направлении.

Ответ 2

В файле php.ini установите эту директиву:

report_zend_debug = 1

Я надеюсь, что это поможет кому-то?

Ответ 3

Для меня проблема заключалась в том, что "Свойства проектa > Источник > Веб-корень:" не был установлен (он имел значение по умолчанию "как его значение).

После того, как он установил мой веб-корень на диске, точки останова начали работать.

Ответ 4

Перейдите к: Project > Properties > Run Configuration > Advanced (button)

Удалите все сопоставления из "Сопоставление маршрутов", если вы не используете Xdebug для удаленной отладки. Это поможет устранить эту проблему.

Ответ 5

Вопрос о том, что файл xdebug.ini существует, но не сообщает его содержимое. Мой установочный файл по умолчанию включал:

zend_extension=/usr/lib/php5/20100525/xdebug.so

Но для того, чтобы отладка действительно произошла, она должна быть включена. Добавьте эту строку:

xdebug.remote_enable=1

Затем phpinfo() сообщит о функционировании xdebug:

enter image description here

Ответ 6

Я столкнулся с этим сообщением, пытаясь решить мою проблему xdebug в eclipse, не нарушая точки перерыва для веб-приложения. Я нашел здесь комментарии очень полезными. Кроме того, этот пост http://www.devside.net/wamp-server/netbeans-waiting-for-connection-netbeans-xdebug-issue оказался очень полезным для решения моей проблемы. Мне просто нужно было установить следующий флаг в моем соответствующем php.ini.

xdebug.remote_enable = 1

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

Ответ 7

Еще одно возможное решение, единственное, что сработало для меня, пробовав все в этом посте и во многих других...

Я отлаживаю проект PHP через XDEBUG на Eclipse Neon в Windows. Источником является удаленный Linux, монтируемый локально как диск через SFTP. Вероятно, это моя собственная ошибка, что это неправильно настроено...

В Eclipse щелкните правой кнопкой мыши ваш проект, затем выберите Configure, затем Add PHP Support. Сразу же началась индексация DLTK; до этого он не запустится ни на что.

Затем мне пришлось открыть исходный код и установить точки останова через Remote File Explorer. Надеюсь, это поможет кому-то.

Ответ 8

У меня была та же проблема: точки останова Eclipse не работали, xdebug_break() действительно сработал. Моя проблема заключалась в пробелах на пути:

<- breakpoint_set -i 1323 -t line -f file:///Users/admin/Documents/projects/something/path%2520with%2520space/web/index.php -n 223
-> 
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1323" id="385680235"></response>

После изменения пути к чему-то без пробелов точки останова в Eclipse работали нормально.