programação,

Depuração de aplicações PHP com XDebug

Diogo Matheus Diogo Matheus Seguir 05/03/2012 · 4 minutos de leitura
Depuração de aplicações PHP com XDebug
Compartilhar

Depuração (em inglês: debugging) é o processo de encontrar a causa de um erro já detectado. Muita gente confunde depuração com teste, mas existe uma grande diferença entre esses conceitos.

Objetivo de testar

Executar uma aplicação visando determinados casos de teste e encontrar defeitos.

Objetivo de depurar

Analisar para identificar qual parte da aplicação está causando o defeito detectado, para que seja possível realizar sua correção.

Neste texto iremos configurar o ambiente para depuração em PHP, o exemplo prático será baseado no WAMP, instalado no Windows, que possui XDebug nativo. Nesse cenário, será preciso configurar o php.ini e uma IDE.

Não utilizo wamp, o que devo fazer?

Em caso de ambiente sem XDebug, será necessário realizar sua instalação antes de prosseguir.

Caso seu sistema operacional seja windows, acesse http://www.xdebug.org/, efetue o download da última versão respeitando o tipo do seu sistema (32bits ou 64bits).

Por outro lado, no ubuntu, basta executar o seguinte comando no terminal.

sudo apt-get install php5-xdebug

Configuração do php.ini

; XDEBUG Extension
 
zend_extension = "path"
 
[xdebug]
xdebug.remote_enable = On
xdebug.profiler_enable = On
xdebug.profiler_enable_trigger = On
xdebug.remote_autostart = 0
xdebug.remote_handler= "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_mode = "req"
xdebug.remote_port = 9000

Na informação “zend_extension”, informe o caminho do XDebug, no caso do windows um arquivo .dll, por outro lado no ubuntu será um arquivo .so. Reinicie o seridor ao finalizar esta configuração, caso esteja utilizando WAMP, reinicie todos os serviços.

// Exemplo de instalação no windows
c:/wamp/bin/php/php5.3.8/zend_ext/php_xdebug-2.1.2-5.3-vc9.dll

Verificar configuração

Para verificar as configurações realizadas, acesse as informações do PHP através da função phpinfo().

Informações do PHP no servidor

Configurando IDE (Eclipse PDT, Zend Studio)

Com o XDebug configurado, vamos precisar realizar algumas configurações na IDE.

Window >> Preferences >> PHP >> Debug

Selecione o XDebug na opção PHP Debugger e clique em Configure, selecione o XDebug e clique em configure novamente. Na opção Accept Remote Session (JIT), marque a opção Any.

Configuração XDebug

Volte para tela de Debug, clique em PHP Executables, depois clique em Add, siga as configurações abaixo e clique em Finish.

PHP Executable

Volte para tela de Debug e selecione em PHP Executable a opção que acabamos de criar e desmarque a opção Break at First line, confira o resultado da tela de debug.

Configuração da interface Debug do PHP

Agora vamos definir em qual navegador nosso script/aplicação será executado ao realizar o debug, eu escolhi o chrome, mas fique livre para escolher seu preferido.

Window >> Preferences >> General >> Web Browser

Selecione a opção Use external web browser, clique em new e adicione um nome e o executável do navegador e clique em OK.

Configuração do navegador Chrome

Agora selecione o navegador que você acabou de criar, clique em Apply e depois OK para concluir.

Trabalhando com depuração no PHP

Com a nossa IDE configurada, precisamos criar um projeto e definir o perfil de debug para este projeto.

File >> New >> PHP Project

Escolha o nome example-debug e de preferência coloque este projeto na raiz do servidor, na pasta www se estiver usando o wamp.

Agora crie um arquivo index.php nesse projeto com o seguinte conteúdo.

<?php
$var = null;
$var = 10;
$var += 20;
echo $var;
?>

Agora marque um breakpoint na linha 6, clicando duas vezes na faixa lateral que corresponde está linha.

Marcação do breakpoint

Feito isso vamos configurar o perfil de debug da aplicação.

Run >> Debug Configurations

Clique com o botão direito do mouse em PHP Web Page e adicione um novo perfil, confira o resultado dessa configuração.

Perfil de debug da aplicação

Agora clique em Apply, em seguida clique em Debug, seu navegador irá abrir realizando uma requisição e logo de cara o eclipse irá acusar que encontrou um breakpoint durante a execução, perguntando se você deseja mudar a perspectiva do eclipse para debug.

Confirmação de mudança de perspectiva

Ao clicar em yes nossa perspectiva muda para debug, veja o resultado:

Perspectiva de debug

Enfim, com o XDebug configurado no ambiente, podemos depurar desde um script simples como visto acima até aplicações de grande porte.