André Alves de Lima

Talking about Software Development and more…

Aprenda a utilizar (de verdade) os breakpoints do Visual Studio

Uma das tarefas mais importantes no desenvolvimento de um aplicativo é o processo de debugging (além do próprio desenvolvimento, é claro). Arrisco dizer que nós, desenvolvedores, passamos uma absurda porcentagem do nosso tempo debuggando os nossos projetos (talvez algo na casa dos 30-40% do tempo?). Agora imagine como a nossa vida seria muito mais difícil se não tivéssemos os breakpoints do Visual Studio para nos ajudar a debuggar as nossas aplicações? Confira no artigo de hoje os segredos escondidos nas configurações dos breakpoints no Visual Studio.

A maioria dos desenvolvedores configuram breakpoints da maneira mais simples possível: colocam o breakpoint no lugar onde eles querem que a execução seja “pausada” e pronto. Isso acaba satisfazendo a maioria dos cenários de debugging, mas, o que muita gente não sabe é que os breakpoints do Visual Studio podem ser configurados. É possível aplicar uma expressão para que o breakpoint só pare quando essa expressão for verdadeira. Também é possível configurar o breakpoint para só parar quando for atingido um número “x” de vezes. No Visual Studio 2013, todas essas opções encontram-se no menu de contexto do breakpoint:

Porém, já não é novidade que o Visual Studio 2013 estará se tornando legado daqui a pouco tempo, uma vez que o Visual Studio 2015 está em Preview e deve ser lançado em algum momento ainda este ano (arrisco dizer que o lançamento deva ser por volta do evento Build, no final de Abril). No Visual Studio 2015 o time responsável pela experiência de debugging resolveu levar essa experiência um passo adiante. A nova versão do Visual Studio conta com uma janela de configurações para os breakpoints, onde é possível customizar todas as opções em um só lugar. Essa janela pode ser acessada pelo menu de contexto do breakpoint, escolhendo a opção “Settings“:

Ou, se preferir, quando paramos com o mouse em cima do breakpoint, podemos visualizar uma pequena toolbar acima do breakpoint. Nessa toolbar podemos acessar a tela de configurações (primeiro botão) ou habilitar/desabilitar o breakpoint:

Como podemos perceber, a janela de configurações dos breakpoints na verdade não é uma janela “de verdade“, mas sim, uma “peek window“. As “peek windows” são janelas que aparecem no meio do código, sem atrapalhar em nada o processo de desenvolvimento. Note que é possível fazer edições enquanto essa janela está sendo exibida ali no meio do código:

Isso não era possível no Visual Studio 2013, uma vez que as janelas de configuração dos breakpoints eram “modais“.

Hit Counts

Com a funcionalidade de “hit count“, além de conseguirmos visualizar quantas vezes o breakpoint foi atingido, é também possível configurar para que o breakpoint seja acionado somente quando o contador atinja um número determinado de iterações. Isso é muito útil quando temos um loop relativamente grande e sabemos que algo errado está acontecendo em uma determinada iteração desse loop.

Por exemplo, se tivermos um código com um loop “for” de zero a cem como abaixo:

        static void Main(string[] args)
        {
            for (int counter = 0; counter <= 100; counter++)
            {
                Console.WriteLine("Iteração {0}", counter);
            }

            Console.ReadLine();
        }

Se quisermos configurar um breakpoint que pare somente quando ele tiver sido atingido 10 vezes (ou seja, na décima iteração do loop), basta configurar a condição do breakpoint para “Hit Count = 10“:

Além do operador “igual“, também é possível utilizarmos os operadores “múltiplo de” ou “maior ou igual“:

Por exemplo, se quisermos configurar o mesmo breakpoint para que ele pare a cada 10 iterações do loop, basta configurá-lo com o operador “múltiplo de“:

Expressões

Outra funcionalidade muito interessante na seção de condições dos breakpoints é a possibilidade de configurarmos uma expressão. Dessa forma, o breakpoint só será ativado caso uma determinada expressão seja verdadeira ou caso o valor da expressão tenha sido alterado. Por exemplo, para que o breakpoint do exemplo anterior só seja ativado quando a variável “counter” for maior ou igual a cinquenta, basta adicionarmos a condição como podemos ver na imagem a seguir (observe que é possível utilizar expressões em conjunto com “hit counts“):

É possível utilizarmos qualquer chamada acessível no ponto em que o breakpoint está localizado, inclusive até chamarmos funções e passarmos parâmetros.

Filtros

A terceira e última maneira de ajustarmos uma condição para que o breakpoint seja ativado é utilizando filtros. A condição de filtros permite que utilizemos algumas variáveis de ambiente do projeto sendo executado (como nome da máquina, Process ID e Thread ID) para decidirmos se o breakpoint deve ser ativado ou não. Eu particularmente nunca utilizei os filtros de breakpoints, mas, é bom saber que eles existem:

Os filtros podem ser utilizados em conjunto com “hit counts” e expressões.

Logando uma mensagem na janela Output

Além das condições, temos também a seção de “ações“. Nessa seção conseguimos configurar para que uma mensagem seja escrita na janela de output quando o breakpoint for atingido. Além disso, é possível escolher se queremos que o breakpoint seja ativado ou não (pode ser que só queiramos escrever a mensagem na janela de output sem que o breakpoint seja ativado). Podemos utilizar algumas variáveis na mensagem a ser escrita na janela de output, por exemplo, o nome da função atual, o nome da função chamadora, etc. O Visual Studio agora proporciona um simples Intellisense com as opções disponíveis:

Veja que atualmente só é possível escrever a mensagem na janela de output, mas, como existe a opção “To:“, algo me diz que o time está pensando em expandir as possibilidades no futuro.

Concluindo

Como mencionado anteriormente, a atividade de debugging é muito importante no processo de desenvolvimento de software. Nessa hora, os breakpoints do Visual Studio são os seus melhores amigos. Portanto, é imprescindível aprendermos a utilizá-los de forma eficiente. Você já conhecia essas funcionalidades escondidas nos breakpoints? Não? Então, a partir de hoje, ao colocar um breakpoint no seu código, pense se você não poderia se aproveitar dessas funcionalidades, como principalmente “hit counts” e expressões. Garanto que a sua vida de debugger vai ficar mais fácil.

Para finalizar, peço novamente para que você assine a minha newsletter. Dessa forma, você fica por dentro de todos os novos posts do meu site, além de receber dicas extras que eu só compartilho por e-mail. Inscreva-se aqui ou utilizando o formulário logo abaixo.

Até a próxima!

André Lima

Image by Michael Mol used under Creative Commons
https://www.flickr.com/photos/28208534@N07/4047355843

Newsletter do André Lima

* indicates required



Powered by MailChimp

5 thoughts on “Aprenda a utilizar (de verdade) os breakpoints do Visual Studio

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *