Debug de Aplicações PHP com XDebug e Eclipse PDT

No artigo anterior, demonstrei passo a passo como instalar no Ubuntu 9.10 a extensão XDebug, utilizada no debugging e profiling de aplicações PHP. Neste artigo demonstro as configurações necessárias para integrar esta ferramenta com a IDE Eclipse PDT.

Configurando o XDebug

Antes de ir ao Eclipse, é necessário modificar algumas diretrizes de configuração do XDebug, para isto basta abrir o arquivo de configuração do PHP como root:

sudo gedit /etc/php5/apache2/php.ini

E na seção:

[Zend]
zend_extension="/usr/lib/php5/20060613+lfs/xdebug.so"

Adicionar logo abaixo o seguinte conteúdo:

[xdebug]
xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000

Após fazer isso, basta verificar se o phpinfo() traz o seguinte resultado:

Resultado da função phpinfo()

Com isso o XDebug está devidamente configurado.

Configurando o Eclipse

A primeira coisa a se fazer no Eclipse é adicionar o executável do PHP. No menu Window -> Preferences existe um menu lateral com o título PHP, ao expandí-lo aparecerá a opção PHP Executables, ao clicar nesta opção aparecerá a seguinte janela:

Janela de executáveis do PHP

Basta então clicar no botão Add e colocar um nome qualquer, informar o caminho do executável (por exemplo, /usr/bin/php) e escolher o tipo do debugger, que é XDebug. O próximo passo é configurar as informações do debugger no Eclipse, para isto basta ir em: PHP -> Debug -> Installed Debuggers, lá existirá uma entrada para o XDebug, basta verificar se a porta é a 9000, e caso não seja clicar em Configure e alterá-la. Após isto basta ir em PHP -> Debug e modificar o PHP Debugger para o XDebug.

Após estas configurações o Debugging do Eclipse já deverá estar funcionando. Caso não esteja, é necessário verificar se o servidor padrão está apontando para a URL correta do Web Server, para isto basta ir em Window -> Preferences -> PHP -> PHP Servers e editar as configurações do servidor padrão.

Exemplo de Debugging

Agora a última etapa é fazer um teste para verificar se tudo está funcionando. Para isso basta criar um projeto PHP, e criar um arquivo chamado teste.php. Dentro deste arquivo é acrescentado o seguinte conteúdo:

<?php
$teste = "ola";
$muaha = array();
for ( $i = 0; $i &lt; 3; $i++ ) {
	$muaha[] = $i;
}
array_shift($muaha);
echo "fim";

Ele é bastante simples, vai criar duas variáveis, fazer um laço para preencher o array, tirar o primeiro elemento do array e imprimir o texto fim. Para executar ele, basta clicar na pequena seta logo à direita do botão de Debug, como apresentado na imagem abaixo, e ir em Debug as -> PHP Web Page.

Botão de Debug no Eclipse

Ele então avisará para abrir a perspectiva de Debug, basta confirmar clicando em Yes e a seguinte tela aparecerá:

Perspectiva de Debug

Pode-se notar que existe uma barra logo à esquerda da numeração das linhas, ao clicar nesta barra será adicionado um breakpoint, que é um ponto de parada na execução do script, o que permite verificar a situação do script até este ponto, como as variáveis alocadas, o conteúdo delas etc. A nível de teste, basta colocar 2 breakpoints, um na linha 4 e outro na linha 8. Após isto basta executar o script, clicando no botão com seta verde, localizado na aba Debug, ele é apresentado na imagem abaixo:

Localização do botão para resumir a execução do script

Logo na primeira parada é possível verificar as variáveis, como o array vazio e a string devidamente preenchida, isto é apresentado na imagem abaixo:

Primeira execução do script

Ao clicar novamente no botão para resumir a execução do script, será feito um dos loops do for definido até que a condição especificada ($i < 3) seja cumprida, ou seja, serão necessários 4 cliques no botão para sair do for :P . Neste laço é possível verificar que o array vai sendo preenchido, e após sair do loop e parar na linha 8 o array está com apenas 2 elementos devido à função array_shift. As imagens abaixo representam, respectivamente, o fim do loop e a parada na linha 8.

Fim do loop: Array com 3 elementos

Parada na linha 8: Array com 2 elementos

E por último, é exibida a saída da página na tela, e a aba de variáveis é limpa, assim como apresentado na imagem abaixo:

Fim do Debug

Concluindo

O XDebug é uma ferramenta bastante útil para programadores PHP, com ela é possível debugar cada trecho do código para garantir uma maior consistência a ele e (tentar) eliminar bugs. Além de debug ela também fornece a funcionalidade de profiling, que será abordada em um artigo futuro. Até a próxima.

3 thoughts on “Debug de Aplicações PHP com XDebug e Eclipse PDT

  1. Muito bom e muito bem explicado seu artigo, Fernando.
    Eu estava usando o Zend Studio (Genérico) no Win7 (original). O Zend Studio é ótimo, embora bem mais pesado, mas muito completo. No entanto, não quero usar nada generico sendo que há ótimas ferramentas livres à disposição.
    Só estava usando o ZS porque já havia tentado configurar o xdebug no PDT no Win e nada, e nem o zend_debugger. Mas com muita pesquisa na net e o seu tutorial, finalmente consegui deixar tudo redondo e funcionando perfeitamente. E o bom que o debugger suporta php 5.3.
    Enfim, agora posso continuar meus estudos de A/POO e Zend Framework aqui nesse espetacular sistema operacional, o Ubuntu 10!

    Abraço amigo.

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>