xdebug

xdebug Завершение сессии отладки, остановка работы после первой же точки останова (Step Into не работает). Как решить

Наблюдаем эту проблема в виртуальной машине, для связки PHP (xdebug) и NetBeans, решение в процессе.

Возможно имеет место какая-то несовместимость версий.

xdebug Warning: Header may not contain NUL bytes in Unknown on line 0 DEBUG SESSION ENDED

Warning: Header may not contain NUL bytes in Unknown on line 0
DEBUG SESSION ENDED

Глубоко в проблему не вникал. Возникает при остановке сессии отладки xdebug.
"Решили" удалением куков в браузере.

netbeans xdebug docker Настройка отладки (ubuntu linux)

Рассмотрим ситуацию, когда приложение с php запущено внутри контейнера и нам нужно отлаживать его через xdebug (инструкция проверялась для php7.4 и Netbeans11.2)

netbeans 11.2 Перестает слушать порт 9000 после оставки отладки после первого неудачного раза (xdebug)

Наблюдается такая проблема:

netbeans 11.2 Перестает слушать порт и открывать проект в браузере в последующих после первой попытка, если остановить отладку при отсутствии соединения с xdebug в первой попытке запуска

IDE приходится перезапускать, чтобы попробовать соединиться с xdebug заново, если вы что-то меняете в нем.

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

docker linux host IP хоста (Основной операционной системы), как обращаться к службам "снаружи"

Cпециальное внутреннее доменное имя host.docker.internal что обращаться к основной системе (хосту) из контейра (гостевой системы) не работает в Linux (как минимум в docker 19), но можно сконфигурировать подсеть для контейнеров приложения, явно указав диапазон адресов подсети, сделать это можно так:

docker Запросы выполняются медленнее чем без докера

Проблема

После переезда в докер запросы стали выполняться очень долго (минимум по 3 секунды лишних на каждый вопрос). При этом докер запускался в ubuntu linux, где накладные расходны на сам докер должны быть минимальными.

Что оказалось

Оказалось, что проблема была в том, что в сборке использовалась конфигурация xdebug (в конфиге ниже это файл config/php/xdebug.ini) в которой было включен автозапуск (xdebug.remote_autostart=1), чтобы исправить ситуацию переключили на 0:

xdebug netbeans Отладка в терминале (консоли), отладка тестов

Предположим, что вы уже умеете настраивать запуск xdebug через локальный сервер.

В нашем случае хотелось посмотреть поотлаживать код, который запускался в режиме командной строки (автотесты с помощью codeception),

моя исходная команда в папке проекта была (в терминале):

netbeans port 9000 already occupied -- xdebug php Как исправить ошибку

Выяснить кем реально занят порт в линуксе можно так:

sudo lsof -i -n -P | more

В моем случае это оказался php-fpm процесс другой версии php.
Поэтому пришлось перенастроить xdebug на 10000 порт.

netbeans xdebug Отладка без указания входного скрипта (index.php) и get-параметров

Основная идея

Идея состоит в следующем:

  1. Нам надо просто запустить отладочную сессию xdebug (например просто открыв главную страницу сайта),
  2. а потом не завершая эту отладочную сессию уже браузере открыть интересующий нас url (т.е. не запускать из нетбинса, где как раз и не обойтись в данный момент без index.php и/или GET-параметров).

Реализация

Теперь сделаем все это по шагам:

waiting for connection netbeans-xdebug Использование xdebug в netbeans, зависание (оишкба, не работает). Как исправить

ПРИМЕЧАНИЕ: более актуальную версию этой заметки см. здесь.

Диагностика проблемы PHP7 и ранее

phpinfo() должно выдавать:

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=0
xdebug.remote_connect_back=0

в моём случае:

Pages

Subscribe to RSS - xdebug