2010-08-06 3 views
19

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

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

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

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

Я также посмотрел на php5/апача и 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 он Handels это правильно.

PHP версии 5.2.6 и Xdebug является 2,1. Любые предложения, где я мог бы посмотреть следующий?

+0

Кажется подозрительным, что он появляется в модулях PHP и модулях Zend, но я не знаю, как это могло произойти. Пробовали ли вы «Инструкции по установке по умолчанию» по адресу http://xdebug.org/find-binary.php? – mjs

+0

Привет, извините, что последний ответ был уезжен за выходные, и я не вернусь в офис до среды. Но потом я попробую, спасибо. – enricog

+0

Привет, просто попробовал Tailored Installation Instructions, но ничего не изменил. На самом деле, я думаю, что это почти то же самое, что и в том, что делает установка. Он также сказал мне: «Вы уже используете последнюю версию Xdebug». – enricog

ответ

10

это выглядит как re - это что-то не так с пути к файлу, содержащему точку останова.

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

+1

Спасибо! Это действительно указывало мне в правильном направлении. Проблема заключалась в сопоставлении пути. Кажется, вам нужно сопоставить все необходимые папки, а не только родительские папки, а также посмотреть: http://wiki.netbeans.org/HowToConfigureXDebug#Tips_from_the_NetBeans_Forums – enricog

+0

Жесткий я не смог проверить сопоставление для всех папок прямо сейчас, Netbeans, похоже, есть ошибка, поэтому я в настоящее время не могу добавить/изменить путь к серверу. Жесткий, похоже, что это должно быть полезно, если кто-то еще справится с этой проблемой. Для меня это теперь странно работает и без отображения. Так что спасибо за то, что указали мне в правильном направлении;) – enricog

+0

Спасибо! Хотя я наткнулся на «Port mapping». Должно быть «Отображение пути», правильно? –

2

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

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

3

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

report_zend_debug = 1 

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

2

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

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

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

xdebug.remote_enable=1 

Тогда phpinfo() сообщит функционирующую XDebug:

enter image description here

+0

+1 для изображения (он понял, что я недавно переустановил WAMP и забыл изменить это снова). Если вы используете WAMP, зайдите в свой php.ini из значка WAMP и измените строку на «xdebug.remote_enable = on "(from 'off') – BillyNair

3

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

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

+0

Я говорил о настройках проекта в Netbeans 8.0 – drstockz

1

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

xdebug.remote_enable = 1

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

0

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

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

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

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

0

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

Смежные вопросы