Intereting Posts
PHP, jQuery, Ajax, отправлять поля ввода HTML с кодом поля вложения не работает Как я могу полностью удалить PHPUnit с помощью установщика PEAR? Используя pdo query () и пользовательский getValue () на том же объекте базы данных? Шаблоны проектирования. Как создать объект базы данных / соединение только при необходимости? Обновить статус ответа посетителей – API календаря Google (PHP) Условный пользовательский выход по цене продажи продуктов и обычной цене Получить массив ключей, переданных по значению PHP Проблема подключения к базе данных sqlite с использованием php Как сохранить переменную на уровне приложения в php? API USPS возвращает код ошибки 80040B19, а учетная запись находится в разделе «Производство» Отображение ассоциации Doctrine2 с условиями Как вы определяете действительный SoapAction? PHP, создающий массив из полей ввода формы Определение успешной загрузки с использованием файла чтения php Ошибка анализа: синтаксическая ошибка, неожиданная '' (T_ENCAPSED_AND_WHITESPACE)

Xdebug успешно подключается к клиентам DBGP, но не останавливается на контрольных точках

У меня установлен Xdebug 2.1 и работает с PHP 5.2.13. Он может успешно подключаться к нескольким клиентам DBGP (т. xdebug.remote_log показывает связь туда и обратно, а сами клиенты также показывают входящее соединение), но он не останавливается на контрольных точках. Я пробовал NetBeans , MacGDBp, а также debugclient из командной строки в комплекте с Xdebug.

Типичный обмен выглядит так:

 Log opened at 2010-07-20 09:33:17 -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///mnt/hgfs/htdocs/mycompany/index.php" language="PHP" protocol_version="1.0" appid="14371" idekey="macgdbp"><engine version="2.1.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2010 by Derick Rethans]]></copyright></init> <- status -i macgdbp -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="status" transaction_id="macgdbp" status="starting" reason="ok"></response> <- step_into -i macgdbp -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="macgdbp" status="stopping" reason="ok"></response> <- status -i macgdbp -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="status" transaction_id="macgdbp" status="stopping" reason="ok"></response> Log closed at 2010-07-20 09:33:18 

NetBeans пытается установить точки останова, и они подтверждаются Xdebug:

 <- breakpoint_set -i 7 -t line -s enabled -f file:///mnt/hgfs/htdocs/mycompany/index.php -n 9 -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="7" state="enabled" id="139360004"></response> 

Однако Xdebug по-прежнему отказывается останавливаться!

Это происходит, если у вас есть Xdebug, загруженный как extension (т.е. extension=xdebug.so ) в конфигурации PHP вместо zend_extension (то есть zend_extension=/usr/lib/php5/20060613+lfs/xdebug.so ).

Убедитесь, что у вас нет extension=xdebug.so любом месте вашей конфигурации PHP , даже если вы уверены, что используете zend_extension . Например, если у вас есть zend_extension в /etc/php5/conf.d/xdebug.ini , это может быть заменено extension в /etc/php5/apache2/php.ini . Если это так, ничто не будет жаловаться, и phpinfo() будет покорно сообщать, что Xdebug загружен! (Xdebug 2.1 делает небольшое предупреждение в phpinfo() при загрузке в качестве расширения, но предыдущие версии ничего не делают.)

Вы должны добавить полный путь к файлу xdebug.so , даже если он помещен в папку php/modules/ , так как zend_extension по умолчанию не выглядит в этой папке.

Если у вас есть exension=xdebug.so , xdebug будет загружаться, но она не остановится на контрольных точках (бьет меня почему).

Удаление всего exension=xdeabug.so (даже из файла exension=xdeabug.so ini, который также загружается), и добавление zend_extension решит проблему.

Если php-файлы помещаются в папку symlink, то XDebug будет работать с пути к исходной папке, а не по пути symlink-folder!

Таким образом, чтобы включить точки останова, вы должны настроить сопоставления пути в вашем ide для символических папок и файлов

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