Отладка xdebug

Как часто вы используете xdebug для отладки

  • Всегда

    Голосов: 1 9,1%
  • Часто, но иногда использую var_dump или аналог.

    Голосов: 7 63,6%
  • Редко

    Голосов: 3 27,3%
  • Никогда

    Голосов: 0 0,0%

  • Всего проголосовало
    11

AmdY

Пью пиво
Команда форума
Летом сел смотреть, что там нового в laravel, обнаружил удобную обёртку для докера laravel sail, но каким было удивление, когда увидел что там нет поддержки xdebug. Что ещё хуже, в репозитории была куча пуллреквестов, которые авторы отклоняли https://github.com/laravel/sail/pull/48.
Меня поразило, что профессиональные программисты могут вовсе не пользоваться таким важным инструментом для отладки. Решил закатить опрос здесь.

п.с. Недавно разум всё же восторжествовал и добавили https://laravel.com/docs/8.x/sail#debugging-with-xdebug
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
На сайд проектах, их порядка 5 на ларке - там не юзаю проектов от авторов фремворка, ни sail, ничего другого. Дебажу раз в пол года, где как придется)

На основном проекте без xdebug - не пернешь, да и с xdebug иногда не с пятого раза понятно что где выстрелило. Поэтому за п.2
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Очень зависит от проекта. Иногда xdebug нужен, а иногда просто бесполезен. Например, когда реализация размазана по шине, и код на колбеках с трейтами, стек отдельного вызова ни о чем не скажет, надо везде логировать трейсы.

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

fixxxer

К.О.
Партнер клуба
Всегда делаю Dockerfile под конкретный проект на основе официального. Везде же расширения разные нужны
 

AmdY

Пью пиво
Команда форума
Не люблю пользоваться чужими образами, там всегда не хватает расширений. Лучше взять официальный докеровский образ - там подготовлены скрипты, которыми легко добавлять нужные расширения.
sail это не образ, а скорей генератор конфига с парочкой полезных алиасов для консоли. Очень хороший и правильный подход. Лучше чем 99% самопальных костылей, что я видел в проектах. Сам использую его пропатченную под себя версию.
 

fixxxer

К.О.
Партнер клуба
Linux Host IP Configuration
Internally, the XDEBUG_CONFIG environment variable is defined as client_host=host.docker.internal so that Xdebug will be properly configured for Mac and Windows (WSL2). If your local machine is running Linux, you will need to manually define this environment variable. ...
SAIL_XDEBUG_CONFIG="client_host=<host-ip-address>"
Ох, извечная проблема. Меня уже давно задолбало и я это решил раз и навсегда вот так

Код:
FROM alpine:3

RUN apk --update --no-cache add iptables

COPY ./entrypoint.sh /

ENTRYPOINT ["/entrypoint.sh"]
Код:
#!/bin/sh                                                                                                                                                                                                                                                               
set -e                                                                                                                                                                                                                                                                 

HOSTNODE_IP="" 
FORWARDING_PORTS=${FORWARDING_PORTS:-'0:65535'} 

try_hostnode_host() { 
HOSTNODE_IP=$(getent hosts host.docker.internal | awk '{print $1}') 
[ ! -z "$HOSTNODE_IP" ] 
} 

try_hostnode_gateway() { 
HOSTNODE_IP=$(ip -4 route show default | awk '{print $3}') 
[ ! -z "$HOSTNODE_IP" ] 
} 

fail() { 
echo Failed to resolve host node IP >&2 
exit 1 
} 

setup_iptables() { 
iptables -t nat -A PREROUTING -p tcp --dport $FORWARDING_PORTS -j DNAT --to-destination $HOSTNODE_IP 
iptables -t nat -A PREROUTING -p udp --dport $FORWARDING_PORTS -j DNAT --to-destination $HOSTNODE_IP 
iptables -t nat -I POSTROUTING -j MASQUERADE 
} 

try_hostnode_host || try_hostnode_gateway || fail 

setup_iptables 

trap : term INT 

(while true; do sleep 3600; done) & wait
и весь дебаг на этот контейнер :)
 

fixxxer

К.О.
Партнер клуба
Так кроссплатформенно и универсально для всех отладчиков (нода итд)
 
Сверху