Breakpoints condicionais no Visual Studio .NET
Leonel Fraga de Oliveira 12/12/2008 00:50

Enquanto monto mais um artigo sobre C#, que tratará sobre eventos e delegates, vai uma dica muito útil para depurar programas usando o Visual Studio .NET.
Já é do conhecimento da grande maioria dos desenvolvedores que as IDE mais populares do mercado possuem inúmeros recursos para a depuração de programas, para que possamos analisar os erros de forma mais adequada.

Um destes recursos é o famoso breakpoint, que coloca um ponto de parada em uma parte do programa.

Quando colocamos um breakpoint no nosso programa e o executamos, o programa irá pausar a sua execução no ponto em que colocamos esse ponto de parada. A partir daí, podemos inspecionar e/ou alterar os valores das variáveis, das propriedades do objeto, executar o programa passo-a-passo (com as teclas F10 para debugar somente dentro da rotina principal e F11 para entrar nas sub-rotinas), entre outros recursos.
Para colocarmos um breakpoint na aplicação, no editor de código clique com o botão esquerdo sobre a borda esquerda (na margem, em cinza) da linha onde iremos inserir, ou então, posicione o cursor na linha e pressione a tecla F9, ou até mesmo pelo menu Debug / Toogle Breakpoint.

A linha ficará com o aspecto mostrado na imagem abaixo:

Linha com Breakpoint no Visual Studio

Simples, não? Agora experimente executar o programa e passar pela rotina. Ao chegar no ponto de parada, a linha ficará com cor amarela, e com isso você poderá inspecionar os valores das variáveis, repousando o mouse sobre elas. No tooltip que aparecerá, um sinal de mais “+” indica que esta variável possui outras propriedades. Expandindo esta lista (basta repousar o mouse sobre o sinal “+”), temos acesso a todas as propriedades do objeto, sendo apresentados tantos níveis quanto forem necessários. Acompanhe na imagem abaixo:

Linha em execução no Visual Studio, com as propriedades do objeto onde o cursor está em repouso

Clicando no ícone de lupa no lado direito da propriedade, será aberta uma caixa que contém o texto desta variável. Isto é uma mão na roda para analisar textos grandes, como uma instrução SQL.

Agora, vem cá… E se temos um looping (um laço for, por exemplo) com, digamos umas 1000 iterações, e exatamente na 500ª iteração dá pau em alguma rotina dentro do laço, vamos executar passo-a-passo o trecho do for 500 vezes?

Para isso é que existe o breakpoint condicional! Ele serve para que possamos parar naquele ponto do programa quando uma determinada condição for verdadeira. No nosso caso do laço for, podemos parar a execução do programa quando a variável contadora tiver seu valor igual a 500.

Para fazer isso, clique com o botão direito sobre o breakpoint desejado, e no menu pop up que aparece selecione a opção “Condition“. Na janela que se abre, digite a condição, que poderá ser qualquer expressão que retorne um valor booleano.
No exemplo da imagem abaixo, iremos parar a execução quando o valor da variávei “i” for igual a 500 (o método Equals faz essa comparação do valor atual da variável com o valor informado como parâmetro).

Colocando uma condição de parada

Hum… pode ser qualquer expressão booleana… Isto é interessante, pois também permite parar o programa quando tivermos mais de uma condição a ser atingida, combinando-as. No exemplo abaixo temos essa situação: iremos parar o programa SOMENTE quando o valor de i for igual a 500 E a variável x for igual a “dummy test :-) ”.

Detalhe da condição de parada

Este recurso também serve para monitorar mudanças nas variáveis. Se ela está inicializada com um determinado valor, e queremos parar o programa quando chegar em outro valor, selecionamos a opção “Has Changed” da janela “Breakpoint Condition“.
Com a condição acionada, um sinal de “+” aparecerá dentro do indicador do breakpoint:

Breakpoint condicional no Visual Studio

Enfim, um recurso de grande ajuda na depuração de programas e que dão pau em uma determinada condição cabulosa :)

Um abraço e até mais!

Leonel Fraga de Oliveira Leonel Fraga de Oliveira é formado em Processamento de Dados na Faculdade de Tecnologia de São Paulo (FATEC-SP - 2002) e anteriormente em Técnico em Eletrônica, pela ETE Professor Aprígio Gonzaga (lá em 1999).
Atualmente trabalha como Analista de Sistemas na Prefeitura Municipal de São Caetano do Sul - SP
Tem como hobbies DJing (também trabalha como DJ freelancer) e ciclismo, além da manutenção dos sites NeoMatrix Light e NeoMatrix Tech.
Gosta de música eletrônica, tecnologia, cinema (super fã de Jornada nas Estrelas), gastronomia e outras coisas mais.


Compartilhe nas redes sociais

   

Deixe seu comentário

comments powered by Disqus