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

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 arquivo PHP.INI

Para o XDebug funcionar corretamente, adicione as seguintes linhas.

; 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 windows
c:/wamp/bin/php/php5.3.8/zend_ext/php_xdebug-2.1.2-5.3-vc9.dll

Analisar configuração

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

Informações no phpinfo()
Informações no phpinfo()

Configurando o 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
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
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 tela Debug
Configuração da tela Debug

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.

Configurando chrome
Configurando 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.

Breakpoint
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
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.

Deseja mudar de perspectiva?
Deseja mudar de perspectiva?

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

Perspectiva de debug
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.

  • Aily

    02/12/2014 às 17:05

    Olá Diogo Matheus, você já usou o PhpDesigner? Se usou teria noção de como configurar o xdebug no mesmo?

  • Diogo Matheus

    26/02/2015 às 15:13

    Olá Aily,

    Já utilizei, mas apenas para verificar suas funcionalidades, nunca configurei o xdebug.

    Abraço e boa sorte.

  • Gabriel Anhaia

    27/01/2016 às 11:02

    Para quem ficou com dúvida, vídeo ensinando com depurar o código em PHP com o Xdebug:
    https://www.youtube.com/watch?v=r2ekLsctaGs

  • Diogo Matheus

    09/05/2016 às 20:11

    Gabriel,
    Valeu por compartilhar. ;)

  • André Bessa Uchôa

    10/09/2017 às 07:02

    Parabéns pela dica Diogo Matheus, faz anos que eu não trabalho profissionalmente com PHP, no entanto, em virtude de um novo projeto vim dar uma atualizada e a partir do seu artigo consegui utilizar o XDebug.

    Obrigado, saúde e paz!
    Sucesso!

Deixe uma resposta

O seu endereço de e-mail não será publicado.. Campos obrigatórios são marcados com *