Xdebug тупик с несколькими вызовами - PullRequest
0 голосов
/ 16 ноября 2018

У меня очень странное поведение при использовании Xdebug с IntelliJ и Vagrant.

У меня есть окно Vagrant с nginx и определены два сервера.Когда я делаю веб-запрос через браузер, я фактически называю сервер, который прослушивает имя сервера, «a».Этот сервер выполняет вызов к другому серверу nginx (на той же машине vbox), который прослушивает имя сервера «b».

Я хочу отладить некоторый код в имени сервера «b».

Таким образом, мой xdebug.ini в vagrant выглядит следующим образом

zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.idekey=PHPSTORM
xdebug.remote_log=/tmp/xdebug.log
xdebug.remote_host=10.10.0.1
xdebug.remote_autostart=0
xdebug.remote_port=9000
xdebug.max_nesting_level=1000

Где 10.10.0.1 - это IP-адрес моей хост-машины.

В IntelliJ у меня также есть дваОпределены конфиги удаленной отладки, одна из которых прослушивает имя сервера «a», а другая - «b».Я также настроил сопоставление исходного кода для обоих.

Теперь, если я просто делаю веб-запрос без отладки сеанса через браузер, вызывается сервер «a», который выполняет вызов «b» и обратно, и я получаюмой ответ без каких-либо проблем.

Если я начну сейчас с сеанса отладки для сервера "a" и установлю точку останова в PHP-коде для "a", все будет работать как положено.IntelliJ останавливается на правильной строке, и если я освобождаю точку останова, запрос корректно завершается в браузере.

Теперь странное поведение ...

Если я отлаживаю некоторый код для сервера "b", весь запрос запускается по таймауту без остановки в точках останова в исходном коде для "b".Кажется, это как-то заходит в тупик.

Журнал Xdebug сначала регистрирует соединение с сервером «a» и сообщает «успешно подключено к IntelliJ».Из-за того, что сервер «a» делает запрос на «b», запускается другой сеанс Xdebug, и здесь также в журнале говорится «успешно подключен к IntelliJ».

Но теперь весь запрос зависал до истечения времени ожидания.Но если истекло время ожидания, кажется, что канал «освобожден», и внезапно наступает точка останова исходного кода с сервера «b».Кажется, они блокируют друг друга, и я не знаю почему.В IntelliJ я уже установил свои одновременные подключения на 4.

Это похоже на проблему IntelliJ, но я не знаю, что делать дальше.

Кто-нибудь имеет идею?Есть ли в xdebug конфиг для "нескольких" соединений?Могу ли я каким-то образом избежать подключения Xdebug к моему IntelliJ для запроса к серверу «a» и просто сделать это для сервера «b»?

...