Xdebug инициирует соединение с клиентом без ошибок

У меня возникла проблема, я не уверен, что это проблема или намерена.

      xdebug.mode=debug
xdebug.start_upon_error=yes

В сценарии нет (неперехваченных) ошибок или исключений, но соединение инициируется несколько раз во время обработки запроса. Это вызывает крайне медленные ответы, особенно когда клиент не слушает, это появляется в консоли несколько раз (4-6).

      [Fri Apr 23 15:32:31 2021] Xdebug: [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(

Все исключения обрабатываются правильно, ответ нормальный, просто ужасно медленный.

Если я повернусь start_upon_error к no или mode к develop, эта проблема исчезает.

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

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

Итак, мой вопрос: предназначено ли такое поведение? Если да, то это тоже должно появиться в документации.

Пробовал это с Xdebug версий 3.0.0 и 3.0.4 (PHP 8, ZTS, x64). Заранее благодарим за реакцию.

1 ответ

Когда происходит исключение, Xdebug не знает (и не видит), будет ли оно перехвачено. Из-за этого ему необходимо инициировать запрос на отладку, чтобы IDE могла обработать потенциальное предупреждение / ошибку / исключение.

Таким образом, это задумано.

Как вы говорите, это нужно задокументировать. Лучший способ отсортировать это - отправить запрос об ошибке функции / документа на https://bugs.xdebug.org.

Другие вопросы по тегам