No PHP, usar var_dump(), print_r() e afins no meio do código não só é uma maneira pouco eficiente como pouco elegante de encontrar e reduzir erros no código. Depurar é uma boa maneira de fazer isso e temos uma ótima extensão do PHP chamada xDebug para nos ajudar.

Instalação

No Windows, a maneira mais simples de instalar o xdebug é baixar a extensão como dll no site oficial da extensão e configurar o php.ini para que o PHP possa reconhecer a extensão:

zend_extension_ts="C:/caminho/para/o/php/ext/php_xdebug.dll"

Para as versões até 5.2.x deve ser usado zend_extension_ts, enquanto que para a 5.3, zend_extension.

Além disso, podemos setar algumas configurações da própria extensão no arquivo. Algumas específicas, para permitir saber mais sobre o que acontece na execução:

xdebug.collect_includes = On
xdebug.collect_params = On
xdebug.collect_return = On
xdebug.collect_vars = On
xdebug.dump_globals = On
xdebug.show_local_vars = On
xdebug.dump.GET=*
xdebug.dump.POST=*
xdebug.dump.COOKIE=*
xdebug.dump.ENV=*
xdebug.dump.FILES=*
xdebug.dump.REQUEST=*
xdebug.dump.SERVER=*
xdebug.dump.SESSION=*

Dando um restart no Apache, o xdebug deve estar listado no phpinfo() com todas as configurações setadas.

Usos do xdebug

Podemos conseguir diversos tipos de informações sobre o que acontece em nossa aplicação. O mais comum é o xdebug mostrar no html quais erros acontecem. Faça o teste:

<?php

$teste = array("um", "teste", "qualquer");

include("umarquivonaoexistente.php");

var_dump($var);

?>

Rodando a página, ele nos diz que não encontrou o arquivo não existe e nos mostra os valores das variáveis até dar que o erro ocorresse. Além disso, podemos observar que o var_dump() foi sobrescrito pelo xdebug, tornando mais fácil a leitura dos valores.

Trace

Podemos também coletar informações sobre a execução do arquivo, guardando em um arquivo separado. O Trace pode ser feito tanto pelo arquivo de configuração:

xdebug.auto_trace=1
xdebug.trace_output_dir=/caminho

quanto individualmente, no arquivo:

<?php

xdebug_start_trace("/caminho/para/o/trace");

$soma = soma(1,2);

xdebug_stop_trace();

?>

Xdebug Remoting

Podemos também configurar o xdebug para ser usado com IDEs, permitindo assim acompanhar os valores de variáveis, colcoar pontos de parada como é normalmente feito no debug com outras linguagens.

Para permitir que isso aconteça, tem que adicionar nas configurações:

xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

Diversas IDEs e editores já funcionam com o xdebug: Netbeans, Eclipse, Notepad++, o plugin para o VIM, entre outros.

Posted in php at dezembro 5th, 2009. Trackback URI: trackback
Tags: ,

Leia também:

No Responses to “Debugando com PHP e xDebug”

Leave a Reply