Xdebug é uma aprimorada extensão para a linguagem PHP que fornece funcionalidades de debug, profiling e trace. Neste artigo iremos mostrar como instalar, configurar e utilizar o Xdebug com o WAMP Server. O WAMP Server proporciona sob a plataforma Windows um ambiente conjunto do Apache, MySQL e PHP.

Instalação do Xdebug

Baixe do site oficial do Xdebug (www.xdebug.org) a extensão propriamente dita. Em nosso caso iremos instalar o Xdebug 2.0.3 para o PHP 5.2.5.

Site oficial do XDEBUG: //www.xdebug.org.

Figura 1: Site oficial do XDEBUG.

Em nosso exemplo instalamos o WAMP Server 2.0. Observe o ícone do WAMP no tray do Windows. É possível parar e reiniciar os serviços do WAMP através deste ícone.

Menu de acesso do WAMP Server

Figura 2: Menu de acesso do WAMP Server

Em nosso caso o PHP instalado é o 5.2.5, portanto o Xdebug deve ser o "php_xdebug-2.0.3-5.2.5". Repare que a versão do Xdebug é xdebug-2.0.3 para o PHP 5.2.5. Atente-se para isto, caso contrário o Xdebug não funcionará adequadamente.

Agora, apenas copie a DLL do Xdebug para o diretório "/wamp/bin/php/php5.2.5/ext/".

Configuração

Feito a instalação passemos a configuração. Primeiramente edite o arquivo "php.ini" que encontra-se na pasta do Apache e adicione a linha:

zend_extension_ts= "<caminho_do_Wamp Server>\bin\php\php5.2.5\ext\php_xdebug-2.0.3-5.2.5.dll" Você pode inserir esta linha em qualquer lugar do arquivo "php.ini" mas como sugestão de organização insira a linha onde estão declaradas as outras extensões. Reinicie o WAMP Server. Em seguida crie uma página chamada "phpinfo.php" que contenha o comando:

<?php PHPINFO(); ?> Para o caso acima, por exemplo, acesse a página em http://localhost/phpinfo.php. Caso o Xdebug tenha sido corretamente instalado e configurado as informações retornadas pela página "phpinfo.php" referente ao Xdebug serão muito parecidas com as reproduzidas nas figuras 3 e 4.

Observe a linha informando que o Xdebug está instalado.

Figura 3: Observe a linha informando que o Xdebug está instalado.

Parâmetros do Xdebug.

Figura 4: Parâmetros do Xdebug.

Derick Rethans, o criador do Xdebug, sugere algumas outras configurações a se acrescentar ao arquivo "php.ini":

O ponto e vírgula é considerado comentário para um arquivo .ini ; protege o servidor em caso de loop infinito xdebug.max_nesting_level=4 xdebug.collect_params=1 xdebug.show_local_vars=1 ; mostra retornos GET do browser xdebug.dump.GET=* ;mostra retornos do campos username e password xdebug.dump.POST=username,password ;Tambem serve para: COOKIE, ENV, FILES, REQUEST, SERVER and SESSION

Alguns desenvolvedores sugerem também as configurações abaixo para o Xdebug:

xdebug.default_enable = On xdebug.collect_includes = On xdebug.collect_params = On xdebug.collect_return = On xdebug.collect_vars = On xdebug.dump_globals = On

Utilização

É importante lembrar que o Xdebug deve ser instalado somente em um Servidor de Desenvolvimento, nunca em um Servidor de Produção. Sua ajuda é enorme no sentido de melhorar a qualidade, agilidade e segurança no desenvolvimento de aplicações PHP.

Como primeiro teste de utilização do Xdebug, crie um script PHP com erro e execute-o. O Xdebug vai mostrar diversas informações importantes sobre o erro. O Xdebug oferece alternativas para melhorar a saída do comando "var_dump();". Na Figura 5 um exemplo de tela de erro retornada com o Xdebug, repare que agora a qualidade e quantidade de informação é muito maior que o padrão das mensagens de erro retornadas pelo PHP sem o Xdebug.

Nova saída de erro do PHP

Figura 5: Nova saída de erro do PHP, com o Xdebug. xdebug.dump.GET=* xdebug.dump.POST=* xdebug.dump.COOKIE=* xdebug.dump.ENV=* xdebug.dump.FILES=* xdebug.dump.REQUEST=* xdebug.dump.SERVER=* xdebug.dump.SESSION=* -->

Profiling

Esta é uma maneira de visualizar quais partes do código fonte estão demorando mais para executar. O Xdebug precisa ser configurado para poder gerar estas estatísticas. Para isso é preciso adicionar as seguintes linhas no arquivo "php.ini": xdebug.profiler_enable = 1 xdebug.extended_info = 0 xdebug.remote_enable = 0 xdebug.profiler_output_dir=d:\wamp\tmp Lembre-se que para as alterações no arquivo "php.ini" tenham efeito é preciso reiniciar o Apache.

Pelo menu do WAMP Server isso é muito fácil de fazer. Com o profiling habilitado, após a execução de qualquer arquivo php da aplicação será gerado um arquivo no diretório temporário com as estatísticas de execução. Em nosso exemplo o diretório temporário é "d:\wamp\temp".

Utilizando o KCachegrind (Figura 6), ferramenta que trabalha com o Xdebug e atua como um profiler, abra este arquivo e observe em modo visual diversas informações com tipos de performance do código, proporcionando uma vantagem considerável ao desenvolvedor.

KCachegrind, ferramenta de Profiling.

Figura 6: KCachegrind, ferramenta de Profiling.

Trace

Trace significa acompanhar o fluxo da aplicação. É preciso indicar onde o trace da aplicação deve começar e terminar:

<?php xdebug_start_trace(); // aqui o código PHP a ser acompanhado xdebug_stop_trace(); ?> 

Um arquivo no diretório temporário do servidor com o nome trace.??.xt será criado com as saídas do trace. Este arquivo conterá todas as informações referente ao trace das páginas acessadas.

Outra forma de habilitar o trace é no arquivo "php.ini", desta forma o trace estará habilitado para toda a aplicação e será rastreado os acessos a todas as páginas. xdebug.auto_trace=1 xdebug.trace_output_dir=d:\wamp\tmp xdebug.trace_options=1 xdebug.trace_format = 0 Exemplo do conteúdo de um arquivo trace:

TRACE START [2008-07-11 19:31:31] 0.0034 123888 ->
 {main}() D:\wamp\www\teste\chama.php:0 0.0036 129504 -> 
xdebug_memory_usage() D:\wamp\www\teste\chama.php:4 >=> 129504 0.0038 129648 ->
 xdebug_start_trace(string(16)) D:\wamp\www\teste\chama.php:5 >=> 
FALSE 0.9181 129720 -> xdebug_stop_trace()
 D:\wamp\www\teste\chama.php:12 0.9182 129720 TRACE END 
[2008-07-11 19:31:32] TRACE START [2008-07-11 19:31:33]
 -0.0114 13120 TRACE END [2008-07-11 19:31:33] TRACE START
 [2008-07-11 19:31:33] 0.0091 13120 TRACE END [2008-07-11 19:31:33] 
TRACE START [2008-07-11 19:33:25] 0.0119 49168 -> {main}() D:\wamp\www\teste\relogio.php:0 0.0120 49200 -> uniqid() 
D:\wamp\www\teste\relogio.php:3 >=> "4877b585bdeca" >=>

 1 0.0164 13752 TRACE END [2008-07-11 19:33:25]

Debug

Um debug é uma ferramenta muito importante para auxiliar o processo de desenvolvimento de software, proporcionando pontos de parada no código e inspeção de valor das variáveis. Para fornecer um debug da aplicação, é preciso uma IDE (Ambiente de Desenvolvimento Integrado) que forneça suporte ao Xdebug.

Dentre as IDEs que se encaixam nesta categoria podemos citar o Eclipse, Notepad++ e o PHPEdit. Para habilitar o Xdebug adicione as linhas abaixo no "php.ini": xdebug.remote_enable=1 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_host=localhost xdebug.remote_port=9000 xdebug.extended_info=1

Conclusão

O xdebug é um dos softwares mais utilizados no mundo para depuração de códigos, dessa forma é possível criar cada vez códigos mais limpos e rápidos e principalmente, sem erros.

Espero que tenham gostado do artigo e até o próximo.