Используя XDebug для трассировки страницы веб-сервиса PHP

Я использую Eclipse и XDebug для разработки приложения PHP, которое полагается на веб-сервисы. У меня есть тестовые страницы, которые используют мои сервисы 2 способами: Ajax (использующий jQuery) и ЗАВИХРЕНИЕ.

Я добавляю точки останова к своей сервисной странице и запускаю отладчик. Когда я называю сервис от Ajax, выполнение останавливается приятно в точке останова, и я получаю свои переменные, пошаговое управление и т.д.

Но когда я называю сервис с помощью ЗАВИХРЕНИЯ (т.е. из страницы PHP), точкам останова не удается функционировать. Даже если я включаю "Повреждение в первой строке" параметр отладчика, я не могу заставить выполнение останавливаться при использовании ЗАВИХРЕНИЯ.

Действительно ли это - поведение отладчика? Я должен добавить hearder к своим ВИХРЕВЫМ вызовам? Изменить URL? Или действительно ли это - ограничение XDebug?

Спасибо за внимание и усилие, Guy

7
задан Traveling Tech Guy 11 January 2010 в 22:07
поделиться

3 ответа

Я пока не могу комментировать, поэтому я публикую это как ответ.

Можете ли вы отлаживать более одного запроса AJAX в одном сеансе? Ваш сеанс отладки все еще работает в Eclipse, когда вы пытались отладить с помощью curl?

Описание о том, как он работает для меня:

  1. Начните сеанс отладки с простой файлом Debug.php, который содержит только И ничего еще. Он останавливается на первой строке, вы «продолжаете», и он заканчивает исполнение.
  2. Теперь запросите скрипт, используя CURL (или другой браузер) Добавление? XDEBUG_SESION_START = ECLIPSE_DBGP на свой путь (я даже думаю, что это дополнение необязательно)
  3. Ваш скрипт должен отображаться в представлении отладки, остановленные в первой строке

Надеюсь, что помогает.

9
ответ дан 6 December 2019 в 06:24
поделиться

Когда вы отладки запроса AJAX, что один отправляется браузером, в одном и том же контексте навигации, как другой (без ajax) . Почему это работает нормально.


Запрос, отправленный Curl, находится в другом, другим, контексте - и я не уверен, что вы можете зацепить отладчик в это ... Но, может быть, ...

Прежде всего, вот Информация, которая может оказаться полезной, цитируя документацию Xdebug :

XDEBUG содержит функциональные возможности для сохранения Отслеживание сеанса отладки при запуске Через браузер: cookies. Это работает Как это:

  • Когда вариация URL xdebug_session_start = name добавлено к URL xdebug излучает печенье с именем " xdebug_session " и как значение Значение xdebug_session_start Параметр URL.
  • Когда есть вариабельность GET (или POST) xdebug_session_start или xdebug_session cookie установлен, xdebug Постараюсь подключиться к отсчету.
  • Чтобы остановить сеанс отладки (и уничтожить печенье) Просто добавьте URL Параметр xdebug_session_stop . Xdebug, тогда больше не пытается сделать связь с отсчитывающим.

Может быть, это может работать, если вы установите это cookie "вручную", отправляя его allong запрос скручиваемости ...

Я предполагаю, что вы сначала должны получить его значение, как установлено значение Xdebug в начале Необходимо возможно сеанс отладки - повторное использование файла cookie в вашем браузере, должно быть возможно.

Примечание: я никогда не пробовал это - если вы попробуете, и это работает, не могли бы вы подтвердить это сработало?

2
ответ дан 6 December 2019 в 06:24
поделиться

Я столкнулся с той же проблемой. Я решил эту проблему, отключив функцию автоматического запуска в php.ini:

xdebug.remote_autostart = 0

, а затем добавив ключ API к URL-адресу веб-службы, который вызывает мой клиент веб-службы:

?XDEBUG_SESSION_START=<your API key here>

, и я не уверен если это важно, но я ввел ключ API в свой отладчик (MacGDBp). Теперь отладчик запускается только при вызове серверного скрипта webervice, а не при запуске клиента.

Надеюсь, это поможет.

2
ответ дан 6 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: