Xdebug игнорирует точки останова - PullRequest
19 голосов
/ 06 августа 2010

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

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

Но, похоже, это не решает меня. Модуль Xdebug загружается через zend_extension = path / to / 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. Любые предложения, где я мог бы посмотреть дальше?

Ответы [ 9 ]

10 голосов
/ 13 февраля 2011

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

<- 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 Port Mapping в Netbeans, но, надеюсь, я указал вам правильное направление.

4 голосов
/ 04 июля 2014

Для меня проблема была в том, что «Свойства проекта> Источник> Web Root:» не было установлено (в качестве значения было задано значение по умолчанию).

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

3 голосов
/ 18 ноября 2012

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

report_zend_debug = 1

Надеюсь, это кому-нибудь поможет?

2 голосов
/ 27 июня 2013

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

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

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

xdebug.remote_enable=1

Затем phpinfo() сообщит о работающем xdebug:

enter image description here

2 голосов
/ 18 августа 2012

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

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

1 голос
/ 29 мая 2015

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

xdebug.remote_enable = 1

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

0 голосов
/ 27 июля 2018

Решено!При создании нового проекта в NetBeans я сначала устанавливаю корневую папку проекта в папку тем WordPress моего сайта WordPress.Вместо этого я создал новый проект, корнем которого является корень всего сайта WordPress, а не просто его темы, и точки останова начали работать.Woohoo!

0 голосов
/ 22 августа 2016

У меня была та же проблема: точки останова 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 работали нормально.

0 голосов
/ 17 апреля 2016

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

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

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

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

...