O principal objetivo deste artigo não é abordar a depuração de códigos em linguagens desktop, pois isso já está consolidado. O foco é apresentar a depuração para web.

Depurar, que inglês significa debug, é o processo de encontrar e reduzir defeitos num aplicativo de software ou até mesmo hardware. Quando citamos linguagens de programação para desenvolvimento Desktop, a depuração é comum e rotineira, visto que a grande maioria das IDE (Integrated Development Environment) já suportam a depuração do código de forma completa.

O Conceito de depuração de códigos WEB é novo e ainda emergente, visto que até hoje muitos Programadores, Analistas e Engenheiros de Software continuam utilizando o famoso “jeitinho brasileiro” para depurar um código sem utilizar uma Ferramenta Case apropriada. Um exemplo disso é o uso dos métodos: var_dump, die, echo e print (na linguagem PHP) de forma excessiva para retornar valores de variáveis e tentar identificar se o procedimento está fazendo o que de fato deveria. Esses aspectos tornam a fase de testes uma barreira a ser vencida.


Conhecendo e instalando a ferramenta case XDebug

Atualmente existem diversas ferramentas para depuração de código Web, utilizaremos neste artigo uma das mais comuns e utilizadas: XDebug. Aplicaremos a mesma no IDE de Desenvolvimento NetBeans, versão 7.3.

O primeiro passo é realizar a instalação do XDebug. Não abordaremos detalhadamente sobre a instalação, pois o nosso foco é mostrar o funcionamento e a correta utilização da ferramenta. Em suma para uma instalação correta siga os passos abaixo:

  1. Acesse o link http://xdebug.org/download.php e baixe a versão correspondente ao seu sistema operacional e ao seu PHP.
  2. Copie e cole o DLL que foi baixado no passo 1 na pasta servidorweb/php/ext. Se você estiver trabalhando com XAMPP o caminho será algo como: C:/Arquivos de Programas/xampp/php/ext.
  3. Localize e abra o arquivo php.ini geralmente encontrado em apache/Bin.
  4. Localize e elimine o comentário da linha zend_extension = "XXXX\php\ext\php_xdebug.dll".
  5. Localize e elimine o comentário da linha xdebug.remote_host=localhost. Altere o valor da definição de localhost para 127.0.0.1.
  6. Localize e elimine o comentário da linha xdebug.remote_enable=0. Altere de 0 para 1.
  7. Localize e elimine o comentário da linha xdebug.remote_handler="dbgp".
  8. Localize e elimine o comentário da linha xdebug.remote_port= 9000.
  9. Atenção, caso alguma das linhas citadas nos passos 5 ao 8 não exista, você deverá criá-las.

Salve o php.ini e reinicie seu servidor Web. Pronto seu XDebug está instalado.

Entendendo a depuração no NetBeans

Com o XDebug instalado, abra o NetBeans e crie um novo projeto PHP, e logo no arquivo index.php adicione o código abaixo:

Listagem 1: Código da página index.php


<?php
 if (isset($_POST['btn_submit'])){
	$nome = $_POST['nome'];
	$idade = $_POST['idade'];
 }
?>
<form action='' method='post' name='form_xdebug'>
	<label for='nome'>Nome</label>
	<input type='text' name='nome' id='nome' />
	<br />
	<label for='idade'>Idade</label>
	<input type='text' name='idade' id='idade' />
	<br />
	<input type='submit' value='Enviar' name='btn_submit' />
</form> 

Antes de iniciarmos a depuração, abaixo será mostrada a função de cada botão no painel de depuração do NetBeans.

Botão Depurar Projeto

Figura 1: Botão “Depurar Projeto”

O botão acima inicializa a depuração do projeto. Este faz com que os outros botões sejam ativados e a depuração inicie.

Botão Finalizar Depuração

Figura 2:Botão “Finalizar Depuração”

Este finaliza a sessão que está sendo depurada no momento, ou seja, encerra a depuração.

Botão Ignorar

Figura 3:Botão “Ignorar”

O botão “Ignorar” faz com que o depurador ao passar em algum método não entre no mesmo, ou seja, apenas leia a sua assinatura e passe adiante.

Botão Entrar

Figura 4: Botão “Entrar”

O botão “entrar” faz o oposto do “ignorar”, este por sua vez força o depurador a entrar no método ao passar por sua assinatura.

Botão Sair

Figura 5: Botão “Sair”

O botão “sair” é eficaz após o uso do botão “entrar”, pois ao varrer todo um método o desenvolvedor pode optar por sair da execução deste antes de finalizá-lo. Imagine que você entre na execução de um método, e descobri que o mesmo possui mais 2000 linhas, então você pode a qualquer momento clicar em “sair” deste método.

Botão Executar para o Cursor

Figura 6: Botão “Executar para o Cursor”

Enfim, o botão “Executar para o Cursor” leva o depurador ao próximo breakpoint do código, ou seja, ele “pula” todas as linhas seguintes até alcançar o próximo ponto de parada.

O Breakpoint é o ponto no código onde deseja-se que o depurador interrompa a execução e comece o seu trabalho. Na imagem abaixo você pode ver um quadrado vermelho ao lado esquerdo da linha que desejamos que o depurador pare a execução.

Utilizando Breakpoint

Figura 7: Utilizando Breakpoint

Para escolher qual linha adicionar um breakpoint, basta clicar sobre o número da linha. Caso não seja possível depurar aquela linha, a imagem ficará como abaixo:

Utilizando Breakpoint em linha não depurável

Figura 8:Utilizando Breakpoint em linha não depurável

É importante salientar que você apenas conseguirá depurar código PHP (neste caso), sendo que qualquer breakpoint que for colocado em código HTML, Javascript ou Linhas em branco apresentará o breakpoint “rachado”, assim com na imagem acima, o que significa que o depurador simplesmente irá ignorar esta parada.

Conclusão

Há muito mais funcionalidades no depurador do NetBeans do que você imagina, e fica inviável mostrar todas detalhadamente neste artigo, que tem por objetivo direcioná-lo para o caminho correto e não suprir todas as informações sobre depuração de projetos.

Para projetos complexos e de grande porte não pode faltar um bom depurador e uma boa equipe que saiba utilizá-lo de forma apropriada e eficiente. Encontrar erros e fazer melhorias em procedimentos complexos torna-se exponencialmente mais fácil utilizando esse tipo de ferramenta, isso porque você pode acompanhar a execução passo a passo do mesmo e realizar otimizações até em tempo de execução (run-time), se necessário.

A Depuração de códigos derver-side deixou de ser apenas mais uma utopia para fazer parte da realidade de muitos profissionais, que literalmente dependem desta para obter uma boa produtividade e retorno em seus projetos.

Veja também