Я изо всех сил пытаюсь заставить PhpStorm и Xdebug хорошо играть на определенной Vagrant VM.
Как эффективно отследить и решить проблему с подключением PhpStorm и Xdebug для этой виртуальной машины?
Хотя я вижу, что PhpStorm и Xdebug в некоторой степени обмениваются данными, соединение из Xdebug не запускает окно отладки PhpStorm, и невозможно использовать возможности отладки PhpStorm.
TheКомбинация рассматриваемых инструментов:
- Vagrant VM с Ubuntu 16-04
- PHP 7.1 с php-xdebug 2.7
- PhpStorm 2018.2.1
- Расширение Firefox Xdebug Helper
- Drupal 8.6.10
- Точка останова вставлена в
index.php
в строке 16.
Я могу получить этот бродягуВМ для подключения к php-debug
интеграции Atom Xdebug.Я также могу получить этот PhpStorm для подключения к Xdebug другого экземпляра Vagrant!
Xdebug config с рассматриваемого сервера:
# xdebug.idekey = "PHPSTORM"
# xdebug.remote_connect_back = on
xdebug.remote_autostart = off
# xdebug.remote_connect_back = on
xdebug.remote_enable = on
xdebug.remote_handler=dbgp
xdebug.remote_host = 10.0.2.2 # IP of the host system
xdebug.remote_log="/tmp/xdebug.log"
xdebug.remote_mode=req
xdebug.remote_port=9000
Я вижу вывод в лог-файле /tmp/xdebug.log
, когдаиспользуя эту конфигурацию.
- Если для Xdebug Helper установлено значение «Отключить», страница загружается в браузер.Записи журнала не записываются в
/tmp/xdebug.log
. - Если для PhpStorm установлено значение «Остановить прослушивание отладочных подключений PHP», страница загружается в браузер.Записи в журнале не записываются в
/tmp/xdebug.log
. - Если для Xdebug Helper установлено значение «Debug» и для PhpStorm установлено значение «Начать прослушивание отладочных подключений PHP», страница приостанавливается, как будто точка прерывания распознается.Однако PhpStorm не вызывает окно отладки, поэтому отладка невозможна.Следующие данные регистрируются в
/tmp/xdebug.log
:
[8264] Log opened at 2019-03-14 01:39:02
[8264] I: Connecting to configured address/port: 10.0.2.2:9000.
[8264] I: Connected to client. :-)
[8264] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///var/www/html/drupal/web/index.php" language="PHP" xdebug:language_version="7.1.26-1+ubuntu16.04.1+deb.sury.org+1" protocol_version="1.0" appid="8264" idekey="PHPSTORM"><engine version="2.7.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2019 by Derick Rethans]]></copyright></init>
[8264]
[8264] <- feature_set -i 1 -n show_hidden -v 1
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="show_hidden" success="1"></response>
[8264]
[8264] <- feature_set -i 2 -n max_depth -v 1
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_depth" success="1"></response>
[8264]
[8264] <- feature_set -i 3 -n max_children -v 100
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_children" success="1"></response>
[8264]
[8264] <- feature_set -i 4 -n extended_properties -v 1
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="4" feature="extended_properties" success="1"></response>
[8264]
[8264] <- feature_set -i 5 -n notify_ok -v 1
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="5" feature="notify_ok" success="1"></response>
[8264]
[8264] <- stdout -i 6 -c 1
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stdout" transaction_id="6" success="1"></response>
[8264]
[8264] <- status -i 7
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="status" transaction_id="7" status="starting" reason="ok"></response>
[8264]
[8264] <- step_into -i 8
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file:///var/www/html/drupal/web/index.php" lineno="14"></xdebug:message></response>
[8264]
[8264] <- eval -i 9 -- aXNzZXQoJF9TRVJWRVJbJ1BIUF9JREVfQ09ORklHJ10p
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="9"><property type="bool"><![CDATA[0]]></property></response>
[8264]
[8264] <- eval -i 10 -- aXNzZXQoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10p
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="10"><property type="bool"><![CDATA[1]]></property></response>
[8264]
[8264] <- eval -i 11 -- KHN0cmluZykoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10p
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="11"><property type="string" size="9" encoding="base64"><![CDATA[bG9jYWxob3N0]]></property></response>
[8264]
[8264] <- eval -i 12 -- KHN0cmluZykoJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10p
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="12"><property type="string" size="4" encoding="base64"><![CDATA[ODAwMA==]]></property></response>
[8264]
[8264] <- eval -i 13 -- KHN0cmluZykoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10p
[8264] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="eval" transaction_id="13"><property type="string" size="1" encoding="base64"><![CDATA[Lw==]]></property></response>
[8264]
Если я затем нажимаю «Остановить прослушивание отладочных подключений PHP», я сразу вижу следующее, записанное в /tmp/xdebug.log
:
[8264] <- run -i 14
Затем быстро следует этот зарегистрированный вывод (слишком большой для этого вопроса), и страница и ресурсы загружаются, как и раньше.
Как эффективно отслеживатьи решить проблему с подключением PhpStorm и Xdebug для этой виртуальной машины?
PhpStorm> Языки> PHP:
Languages > PHP">
PhpStorm> Языки> PHP> Отладка: Languages > PHP > Debug">