Debugando aplicações PHP com Xdebug e Eclipse PDT


Autor/fonte: José Roberto
E-mail/Url: http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=8069
Tags: [ debug ] [ xdebug ] [ eclipse ]



Digg del.icio.us

A motivação para escrever este artigo já é de longa data. Há pelo menos 1 ano, uso o Xdebug com Eclipse para depurar minhas aplicações. Quem programa OO em PHP sabe o quanto sofremos para depurar nossos scripts.

Há tempos que os programadores PHP clamam por uma IDE totalmente integrada, com depurador, auto-complete de código, classes e métodos. Depois que a Zend se juntou a Eclipse Foundation as coisas começaram a andar mais rápido. o PDT (PHP Development Tool) está bem completo. Óbvio, ainda não chega aos pés do Eclipse for Java, mas estamos progredindo.

Neste tutorial não vou ensinar a instalar o Eclipse PDT, porque não tem segredo. Bastando descompactar o pacote no qual ele vem e ter java instalado na máquina. Oooops, ensinei. (piada besta)

Para iniciar vamos falar do ambiente utilizado:

  • KUbuntu 7.10;
  • Apache 2;
  • PHP 5.2.3;
  • Xdebug 2.0.2;
  • Firefox 2;
  • PDT 1.0.2.


A sua versão de Apache, PHP, PDT pode variar, em geral os passos ensinados neste tutorial serão válidos, com exceção de alguns caminhos que variam de distribuição para distribuição.

Instalando e configurando o Xdebug

Nosso primeiro passo é instalar as ferramentas adequadas.

Instalando o php-pear e php5-dev

O PHP-PEAR é um conjunto de ferramentas que auxilia a instalação de várias extensões no php, como por exemplo: xdebug, oci8, pdo etc.

Para instalar o php-pear basta entrar em um console e executar:

# apt-get install php-pear

O PHP5-DEV é um pacote onde estão todas as bibliotecas usadas pelo php para compilar extensões e recompilar o próprio php. Para instalá-lo basta executar:

# apt-get install php5-dev

Instalando o xdebug

Tendo o php-pear instalado, fica fácil instalar o xdebug. Há dois métodos: um automático, onde é usado apenas um comando e outro manual, onde é necessário baixar arquivo e executar uma série de comandos.

Instalando o Xdebug automaticamente:

Utilizando um terminal e tendo poderes de administrador executando o comando

# pecl install xdebug

O restante será efetuado automaticamente, sem problemas.

Instalando o Xdebug manualmente:

Caso a instalação automática falhe, é possível fazer manualmente. Para isso, basta seguir os seguintes passos:

  • Baixar os fontes em tgz (source) do xdebug: http://www.xdebug.org;
  • Explodir o arquivo baixado: tar zxvf xdebug-versao.tgz;
  • Entrar no diretório criado e executar o comando phpize;
  • Executar ./configure;
  • Executar make;
  • Executar make install (como root).


Configurando o xdebug

Instalamos o xdebug, porém ele ainda não está configurado no php. O Apache no Ubuntu tem uma estrutura toda descentralizada, isto é, existem vários arquivos de configuração, o PHP segue a mesma lógica, tendo as configurações das extensões em arquivos diferentes do php.ini.

O diretório que o php utiliza para guardar as configurações das extensões é "/etc/php5/conf.d". Lá podemos criar um arquivo chamado xdebug.ini que conterá as seguintes linhas:

A primeira linha diz que estamos utilizando uma extensão zend e temos que passar o caminho completo da extensão.

zend_extension="/usr/lib/php5/20060613+lfs/xdebug.so"
xdebug.remote_port = 9100 # porta que o xdebug responderá
xdebug.remote_handler="dbgp" # valor padrão
xdebug.remote_host="localhost" # endereço do host que o xdebug estará rodando
xdebug.remote_enable = On # On habilita o debugger remoto, Off desabilita

Podemos ainda adicionar o profiler, que mapeará todas as funções, objetos que estão sendo utilizadas no script. Para habilitar o profiler adicionamos mais duas linhas:

xdebug.profiler_enable = On #habilitar o profiler com On e desabilita com Off
xdebug.profiler_output_name = cachegrind.out #arquivo onde ficará guardado o mapeamento

Para poder ler um arquivo de mapeamento podemos utilizar as ferramentas WinCacheGind para Windows ou KcacheGrind para Linux.

No próximo passo vamos configurar o PDT.

Configurando o Eclipse PDT

O Eclipse PDT já conta com uma debug específico para PHP, mas para que ele funcione precisamos fazer algumas configurações.

Adicionando executáveis PHP

No menu Window -> Preferences ache a entrada PHP Executables, lá devemos adicionar o caminho onde estão nossos executáveis. No nosso caso está em /usr/bin/php e escolhemos como debugger o Xdebug.

Configurando o Debug

É importante lembrar que devemos dizer para o debugger do Eclipse em qual porta "escutaremos" o xdebug. Esta porta deve ser a mesma daquela que indicamos no arquivo xdebug.ini. No nosso caso 9100.

Adicionando um ambiente de Debug

Agora que já temos configurado o executável do PHP, indicamos a porta do Xdebug, é hora de adicionar um servidor ao Debug do Projeto.

Clicando no menu Run, vamos até a opção "Open Debug Dialog". Lá há uma opção chamada PHP Web Page, proceda com os seguintes passos:

  • Duplo clique sobre o PHP Web Page. Isso fará que uma nova configuração seja criada, o nome padrão é "New_Configuration";
  • Modifique o Debug Server para Xdebug;
  • Indique qual arquivo será usado para o debug (ele será o ponto de partida, não necessariamente precisa ser debug. Deve ser uma página que tem links para os outros scripts ou faz chamadas para eles);
  • Diga qual URL o browser deve abrir para inicializar a sessão. Muito importante: Quem deve inicializar esta sessão é o Eclipse. Não adianta abrir o browser e digitar o endereço que você quer debugar, nada vai acontecer.


Adicionando um browser ao Eclipse

O Eclipse conta com um browser interno, porém para um melhor controle, o ideal é usar um browser externo, podem ser qualquer um que esteja instalado na máquina.

Para isso basta ir em "Window -> Preferences -> General -> Web Browser":

Próximo passo: Usar o debugger.

Usando o Debugger

Agora com tudo configurado podemos usar o debugger.

Inicializando o Debugger

Na barra de ferramentas do Eclipse há um botão que inicializa o Debugger, por acaso este botão tem um inseto (bug) nele.

Quando este botão for clicado uma nova janela ou abra do browser será aberta e lá você poderá navegar até o script que você quer debugar. No momento em que você chegar ao script que tem um breakpoint será aberta a visão do PHP Debug.

Ao iniciar o debug, você verá que uma nova janela ou aba (dependendo do browser) será aberta, com a URL mais ou menos assim:

http://meusite/pagina_que_indiquei_como_inicio.php? XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=12064647002702

Usando esta janela ou aba aberta você poderá navegar pelo seu sistema até chegar nos breakpoints que você indicou.

Visão geral do PHP Debug

Uma vez inicializado podemos acompanhar a execução do script, no Eclipse há uma visão específica para isso, chama-se "PHP Debug". Esta visão é composta por alguns elementos:

Durante a execução do script, nós podemos adicionar ou remover break-points. Há uma aba chamada "Breakpoints" onde estão indicados todos os breaks do nosso projeto.

Atalhos

Uma coisa muito útil é saber usar os atalhos do Eclipse PDT na visão Debug. Aqui vão os que eu considero os mais importantes:

  • F5 - Step Into (entrar em alguma rotina, método, classe);
  • F6 - Próximo passo;
  • F7 - Executa até o fim;
  • F8 - Continuar até acabar;
  • F9 - Reinicia o Debugger.


Conclusões e referências

Bom, espero que vocês, programadores PHP, aproveitem bastante este tutorial e que seja bem útil no seu dia-a-dia.

Alguma coisa pode falhar devido a algum lapso de memória, sendo assim podem me escrever que terei grande satisfação em responder.

Como referência para este tutorial, tenho:





Enviado por xKuRt em 17/04/2008 às 13:59


Itens relacionados

Xdebug e Apache userdir no Ubuntu 8.04
Xdebug: Instalação, configuração e utilização com WAMP Server
FirePHP: Depurador de códigos PHP no Firefox
FirePHP: Depurador de códigos PHP
Aumente sua produtividade: Code templates no Eclipse PDT
Instalando o Eclipse PDT All-in-One 1.0.3
Função para debug

Avaliação

Avaliação desta publicação: 10.00; Total de avaliações: 1


Avaliar:


A avaliação de publicações é restrita a membros cadastrados e logados no nosso site.



Comentários

AvatarEnviado por fabiojpoli em 01/02/2011 às 13:45

Boa tarde, já estou ha muito tempo tentando configurar o Xdebug com o Exclipse PDT, fiz e refiz a configuração, ele funciona corretamente, porém, o breakpoint não funciona, não pára na linha de código, simplesmente continua executando. O que pode ser? Ja encontrei comentários na internet reclamando desta mesma situação. Agradeceria muito se pudesse me ajudar. Meu email é fabiojpoli@hotmail.com.

Obrigado!

AvatarEnviado por jfb0101 em 02/01/2011 às 13:01

Oi amigo. Gostaria de lhe parabenizar pelo artigo, muito bom.

Segui tudo o que você disse mas estou com um problema simples (acho, rs) e preciso de ajuda.

Quando indico o arquivo que deve ser chamado pelo PDT nas configurações do PHP Web Page, o debug
só funciona se for o arquivo .php que estou debugando.

Tenho um arquivo .html no qual há um código em AJAX que chama o arquivo que quero debugar via
XMLHttpRequest e gostaria de indicar este arquivo .html para ser chamado pelo PDT e quando o código
em AJAX chamar o .php gostaria que o código parasse onde existem os breakpoints.

Resumindo, só consigo usar o debug no PDT quando chamo o próprio arquivo .php.

Desde já agradeço a atenção.

--
jfb0101


Envio de comentário:




  

Sexta, 19 de Setembro de 2014




Top 5 membros

Últimos membros online

  • 1em 19/09 às 11:39
  • nobioem 18/09 às 22:31
  • xKuRtem 18/09 às 19:55

Últimos membros cadastrados



Capa do livro
Shell Script Profissional


Capa do livro
Construindo Aplicativos Android com HTML, CSS e JavaScript: Criando Aplicativos Nativos com Ferramentas Baseadas nos Padrões Web


Capa do livro
Autodesk Revit Architecture 2013: Conceitos e Aplicações





Hostnet

IMD