Olá, ontem na faculdade um amigo de sala Aydilson me perguntou sobre um erro que estava ocorrendo no NetBeans sobre XDebug, e resolvi pesquisar um pouco. Encontrei este artigo da IMasters que ensina instalar, configurar e utilizar com o Wamp o XDebug. Segue o artigo:
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
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.
Figura 1: Site oficial do XDEBUG: http://www.xdebug.org.
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.
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="\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:
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.
Figura 3: Observe a linha informando que o Xdebug está instalado
Figura 4: Parâmetros do Xdebug.
Derick Rethans, o criador do Xdebug, sugere algumas outras configurações a se acrescentar ao arquivo "php.ini":
; 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
Elton Minetto, um desenvolvedor PHP, sugere 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.
Figura 5: Nova saída de erro do PHP, com o Xdebug.
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.
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:
"
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
A utilização do Xdebug vem aumentando, hoje é possível encontrar mais
artigos e desenvolvedores que o utilizam, pois os benefícios são
óbvios. Sugiro a leitura do documento do Elton Minetto e para quem sabe
inglês a palestra do Derick Rethans apresentada no Brasil quando ele
veio para o PHP Conference em 2007. O artigo do Stefan Priebsch no Zend
Developer Zone é indicado para aqueles que desejam se aprofundar nas
artes do Xdebug.
Fonte: IMasters