Que o editor VIM é um mega canivete suiço, todos sabem ou já ouviram pelo menos falar.
Neste artigo iremos apresentar como debugar um código PHP no VIM. Para ativar o debug, instale o XDebug ou ative em seu PHP. Iremos explicar como fazer isto no Debian:
Debian 8 Jessie:
#aptitude install php5-xdebug
Em seu php.ini adicione a configuração abaixo. Caso esteja utilizando Debian 8, é provável que esta configuração, inclusive um pouco mais completa já esteja definida em /etc/php5/conf.d/20-xdebug.ini
Debian 9 Stretch:
#aptitude install php<span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span>-xdebug
Em seu php.ini adicione a configuração abaixo. Caso esteja utilizando Debian 9, é provável que esta configuração, inclusive um pouco mais completa já esteja definida em /etc/php//conf.d/20-xdebug.ini
xdebug.remote_enable=1 xdebug.remote_handler=dbgp xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000
Verifique se o VIM utilizado possui suporte aos seguintes recursos, conforme comando abaixo:
vim --version
Facilidades necessárias: +python e +signs na lista de recursos ativados. Caso não estejam, verifique em sua distribuição em como ativar estas opções.
Em seguinda, abra o vim. Tecle <f5> para iniciar o modo debug do VIM e em seguida vá até a página a ser debugada e acrescente a URL desta página o seguinte parâmetro:
XDEBUG_SESSION_START=1
Ao aperta <f5>, seu VIM deverá demonstrar uma mensagem como abaixo:
waiting for a new connection on port 9000 for 5 seconds...
Caso os procedimentos tenham sido executados corretamente o seu VIM deverá estar em modo debug, aguardando comandos para seguir com a execução do código PHP, conforme suas instruções.
Os possíveis comandos de debug são:
to step into;
to step over;
Irá preparar o VIM para aguardar uma nova conexão / chamada para debug pelos próximos X segundos
ver todas as variáveis do contexto;
visualizar as propriedades sob o cursos atual
O comando :Bp irá adicionar ou remover um breakpoint na linha atual.
:Up e :Dn movem na stack trace.