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:
- Acesse o link http://xdebug.org/download.php e baixe a versão correspondente ao seu sistema operacional e ao seu PHP.
- 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.
- Localize e abra o arquivo php.ini geralmente encontrado em apache/Bin.
- Localize e elimine o comentário da linha zend_extension = "XXXX\php\ext\php_xdebug.dll".
- 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.
- Localize e elimine o comentário da linha xdebug.remote_enable=0. Altere de 0 para 1.
- Localize e elimine o comentário da linha xdebug.remote_handler="dbgp".
- Localize e elimine o comentário da linha xdebug.remote_port= 9000.
- 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.
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.
Figura 2:Botão “Finalizar Depuração”
Este finaliza a sessão que está sendo depurada no momento, ou seja, encerra a depuração.
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.
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.
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.
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.
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:
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.