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.