Debugando aplicações PHP com Xdebug e Eclipse PDT

Salve, salve galera. De novo, depois de um longo período de hibernação venho escrever um novo artigo. Desta vez o artigo é sobre PHP, mais especificamente sobre depuração (vulgo debug) de código sem a utilização de die(), print_r() e var_dump(). Pra isso vamos usar o Eclipse PDT, Xdebug e um browser.

[ Hits: 79.094 ]

Por: José Roberto em 11/04/2008 | Blog: http://www.jragomes.com


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://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.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalando e configurando o Xdebug
   3. Configurando o Eclipse PDT
   4. Usando o Debugger
   5. Conclusões e referências
Outros artigos deste autor

Acessando contas do Hotmail pelo Mozilla Mail

Virtualizando com VirtualBox

Organizando as idéias

Fazendo um site completo rapidinho com Joomla

Fazendo uma conexão bridge no VirtualBox

Leitura recomendada

PHP 5 - Compilando com as melhores práticas com PHP 4

Paginação de resultados em PHP/MySQL

Capturando conteúdo de sites em PHP

Inteligência Artificial com PHP e MySQL (parte I)

Compactador de URL utilizando manipulação de diretórios do Linux com PHP

  
Comentários
[1] Comentário enviado por baxman em 11/04/2008 - 16:15h

José Roberto,

que coincidência, pois ia escrever este mesmo artigo, mas ao invés de utilizar o PDT seria o notepad++.

mas valeu .. obrigado por postar o artigo

[2] Comentário enviado por erickbt86 em 12/04/2008 - 08:53h

Muito bom o artigo... prático e eficaz. Vejo que muita gente tem dificuldade em começar a utilizar o Eclipse PDT e estão artigos desse tipo em português.

t+

[3] Comentário enviado por wilbil em 03/05/2008 - 12:04h

cara vc esta de parabéns sempre estive atraz de uma solução desta para php vou instalar aqui para testar e ja comento

abraco muito obrigado

[4] Comentário enviado por felipebastosweb em 19/02/2009 - 15:38h

acabei de instalar o Eclipse PDT e estou tentando configurar os Executáveis PHP que realmente está em /usr/bin/php mas na hora de executar, sempre diz que não foi localizado.

o que fazer ?

[5] Comentário enviado por felipebastosweb em 19/02/2009 - 15:58h

opa, achei este artigo, 1/2 antigo, mas que mostrou o que tava faltando configurar
http://blog.diovani.com/2008/08/10/configurando-eclipse-pdt-xdebug/

[6] Comentário enviado por sampaioprimo em 13/03/2009 - 13:45h

opa, parabéns pelo artigo. gostaria apenas de observar que no meu ambiente (ubuntu 8.10, apache2, php5) colocar comentários dentro do arquivo de configuração do xdebug não funciona. ele passa a ignorar a linha que tem um comentário. abraços, rodrigo.

[7] Comentário enviado por xploitx em 05/11/2009 - 04:32h

Muito obrigado, nota 10 e favoritado.

[8] Comentário enviado por jonathan bispo em 01/01/2011 - 19:14h

Por favor, eu preciso de ajuda. Já fiz tudo o que foi dito, configurei tudo mas não consigo debugar minhas aplicações.

Tentei um simples:

<?php
$a = 1;
echo $a;
?>

Consigo ver o valor na tela do navegador mas meus breakpoints não funcionam. As variáveis não aparecem.

Já li pelo menos três tutoriais sobre como configurar o PDT com XDEBUG mas não consigo fazer os breakpoints funcionarem.

Agradeço a quem puder me sugerir uma solução.

Obrigado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts