O NeoMatrix Tech está de casa nova!

Você deverá ser redirecionado em 6 segundos. Se não, visite:
http://www.leonelfraga.com/neomatrixtech
e atualize seus favoritos.

Aviso IMPORTANTÍSSIMO!

Aviso aos navegantes:

O NeoMatrix Tech mudou de casa!!!

A partir de agora, acessem pelo novo endereço:

http://www.leonelfraga.com/neomatrixtech

Ué... mas é só o domínio mudou de lugar?

R: Na verdade, não é bem assim hehe. Este domínio que você acessa agora aponta para um blog hospedado no Blogger, enquanto no novo, aponta para um blog na plataforma Wordpress, hospedagem própria, muito mais rápida e com um layout mais agradável de ler ;)

Não vou fechar este domínio igual ao que eu fiz com o NM Light (que já está 100% na nova plataforma). Talvez beeeeeeem depois eu faça isso.

Todos os posts daqui se encontram lá, e novos posts serão colocados somente no novo endereço.
A única coisa que não consegui importar foram os comentários. Mas em breve vai ter um post contando sobre a epopéia que foi migrar o NeoMatrix Tech!

Somente vou fechar a área de comentários daqui. Caso queiram comentar, favor ver o post correspondente no "Novo NeoMatrix Tech" e comentem por lá. É bem melhor! (pena que os permalinks "amigáveis para SEO" não funcionam lá, dá erro 404 e não consigo fazer a configuração funcionar. E olha que eu já vi vários artigos falando desse assunto :( ).

Quem assina o feed, já está lendo o conteúdo do novo NeoMatrix Tech!

sexta-feira, 12 de dezembro de 2008

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:

Visualização do Breakpoint no VS 2005

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:

Expandindo as propriedades de um objeto durante o breakpoint

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).

Menu de opções de Breakpoint e janela para Breakpoint Condicional

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 :-)".

Expressão composta na janela de Breakpoint Condicional

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:

Aspecto do indicador de breakpoint condicional

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

Para tornar este artigo ainda mais interessante, escreva suas críticas (desde que construtivas e sem ofenças), elogios, sugestões, complementos, dúvidas, etc, etc, etc!!!

Sobre o NeoMatrix Tech

Meu blog para assuntos profissionais, ligado com tecnologia.
Dicas de programação (grande parte de C# e ASP.NET, mas não limitado a essa plataforma :-) ), dicas de utilitários, análises de equipamentos e serviços, resenhas sobre sites que eu visito, relacionados com tecnologia, opinião sobre mercado de trabalho, metodologias de desenvolvimento, comportamento no mundo tecnológico...

NeoMatrix Light

  © Blogger templates ProBlogger Template by Ourblogtemplates.com 2008 - Editado e configurado por Leonel F.

Voltar ao TOPO