Breakpoints condicionais no Visual Studio .NET
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:
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:
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).
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 :-)".
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:
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!
0 comentários:
Postar um comentário