Clientes de Debug para PHP [Atualizado]

xdebug-logoDias atrás, participei da PHP Conference. O evento foi melhor do que as minhas expectativas e voltei cheio de ideias e dicas para por em prática. Uma das dicas foi começar a usar o xDebug pra valer. Chega de fazer debug com var_dump!

Quanto à instalação do xDebug, não tive problemas. O complicado mesmo foi escolher o cliente do debug. Pelo que tenho visto em posts e eventos, a maioria dos programadores PHP faz debug em uma IDE, na maior parte, o Eclipse PDT. Teoricamente (ou seja, segundo o site do xDebug) existem várias outras opções. Tentei testar todas as opções para linux na prática, algumas não saíram da teoria.

Testei o protoeditor como plugin do Kate (meu editor de código atual) e não consegui compilar por falta de algumas bibliotecas. Dei uma chance para o Eclipse, mas a lentidão e a quantidade de bugs dele me tiraram do sério (por isso o Kate é meu editor atual). Tentei o plugin do Emacs, mas também não consegui fazer funcionar (acredito que seja por falta de conhecimento). Pensei no Netbeans, mas não tive paciência para baixar e instalar. Por último ou não, testei o plugin do VIM, este sim funcionou perfeitamente!

Eu ainda gostaria que houvesse um programa para linux parecido com o MacGDBp, mas o VIM está cumprindo o objetivo com louvor, principalmente depois que eu li o vimtutor.  Aliás, com o que eu aprendi do VIM, deu até vontade de passar a usá-lo mais regularmente. Talvez em um futuro próximo…

Para facilitar a vida

Criei uns bookmarklets para adicionar as variáveis de ambiente do xDebug na página atual do navegador (o código ficou tão pequeno que coube até em um tweet – Pena que não dá pra ler direito). Se quiser usar também, arraste o link abaixo para sua barra de favoritos:

[xDebug] Start Session

[xDebug] Stop Session

[xDebug] Profile

Para agilizar o debug de scripts php-cli, também pode adicionar estes dois “aliases” em ~/.bashrc (para que sejam recriados em novas sessões do terminal):

alias xdebug_debugger='export XDEBUG_CONFIG="remote_port=9000 remote_enable=1"'
alias xdebug_profiler='export XDEBUG_CONFIG="profiler_enable=1"'
alias xdebug_clean='export XDEBUG_CONFIG=""'

Atualização – 31/12/2009: Adicionei dois bookmarklets (profile e stop xdebug – aproveitei para reduzir ainda mais o código :)) e um alias para iniciar o profile em linha de comando.

Até a próxima!

Anúncios

Bugs que me deixaram ocupado este mês

Atualmente estou lendo 2 livros, desenvolvendo um “projeto de estimação”, e estudando algumas coisas menores em paralelo. Mas não é só isso que tem roubado meu tempo, e minhas noites de sono. Encontrei alguns bugs em tarefas que deveriam ser triviais. Estou compartilhando na esperança de ajudar outras pessoas a economizar o tempo que gastei.

1- Eclipse Ganymede + PDT 2 + Linux 64 bits
O eclipse não é o auge da produtividade, mas é minha ferramenta preferida para fazer código. A grande vantagem do eclipse é sua extensibilidade. É possível encontrar plugins para TUDO, embora eu ache que muitos plugins comprometem muito sua estabilidade (assim como acontece com o firefox).

Apesar de ser muito fácil de instalar os plugins, não consegui de jeito nenhum instalar o PDT 2 no meu eclipse ganymede que está instalado no meu notebook com kubuntu 9.04 x86_64. Muito google depois, encontrei a salvação neste post

2 – mod_rewrite no WordPress MU
Apesar da instalação no servidor de desenvolvimento (meu computador) estar funcionado perfeitamente, minha instalação do WPMU no servidor de produção não estava exibindo as imagens corretamente, encaminhando a requisição para um erro 404. Recorri ao google e descobri que isto aconteceu com um usuário do forum do WPMU. O problema é que este usuário decidiu simplesmente trocar de servidor!! Google de novo, leitura da seção do mod_rewrite no manual do apache, e finalmente encontrei uma solução que coloquei no forum (em resposta ao usuário que trocou de servidor).

Ainda estou monitorando esta resolução, não sei se pode causar outros bugs no futuro. Até o final desta edição (sempre quis dizer isto) não tive nenhum problema. Ainda assim, publico aqui, se ocorrer algo.

A parte boa de tudo isso é que estudei algumas coisas que, com certeza, serão usadas no futuro. Só espero não ter outra sessão de aprendizado forçado tão cedo, afinal, preciso produzir alguma coisa!

Atualização: A correção que eu coloquei no forum do WPMU funcionou apenas para o site principal, nos sub-domínios o erro persistiu. Uma nova correção, com explicação, está neste link.