Desenvolvimento - Visual Studio

Novidades na depuração de código no VS2010 – IntelliTrace

No primeiro artigo sobre debug com o Visual Studio 2010, mostrei como fixar itens de debug, colocar comentários e ver os valores anteriores dos objetos fixados mesmo sem executar o programar. Hoje vou falar de outro recurso sensacional chamado IntelliTrace.

por Márcio Fábio Althmann



No primeiro artigo sobre debug com o Visual Studio 2010, mostrei como fixar itens de debug, colocar comentários e ver os valores anteriores dos objetos fixados mesmo sem executar o programar.

Hoje vou falar de outro recurso sensacional chamado IntelliTrace.

Eu gosto de comparar o IntelliTrace com a janela History do Photoshop, isso mesmo, Photoshop. Mesmo para quem não conhece ou nunca viu essa janela, a idéia dela é salvar tudo que o usuário faz, desenhar algo, apagar, mover de lugar, e facilmente podemos voltar o que estivermos fazendo no Photoshop clicando nos eventos gravados, o IntelliTrace faz o mesmo com o nosso debug, ele gera um histórico de tudo que acontece durante a execução do sistema, e conseguimos voltar a pontos específicos, recuperar valores, ver chamadas de eventos, e muito mais.

Antes de começar um pequeno detalhe, o IntelliTrace está disponível somente no Visual Studio 2010 Ultimate então infelizmente se não possui a versão Ultimate não terá acesso ao IntelliTrace.

Primeiramente vamos ver as opções de configuração do IntelliTrace, no menu Tools/Options agora temos novas opções de configuração do Visual Studio e o IntelliTrace tem configurações específicas.

Por padrão o primeiro RadioButton vem selecionado, ou seja o IntelliTrace só vai coletar informações sobre os eventos, e como podem ver na tela, não afeta o desempenho na hora do debug.

Eu marco o segundo RadioButton, onde além dos eventos ele coleta as chamadas realizadas também durante o debug, mas pode afetar um pouco o desempenho durante o debug, confesso que nunca tive problemas com desempenho utilizando o recurso.

Outro detalhe importante que marquei na imagem, é que o recurso de Edit and Continue que permite alterar um código com o programa executando e continuar o debug é desabilitado.

Outra opção de configuração interessante no IntelliTrace é escolher quais eventos ele vai analisar.

A quantidade de opções é enorme, não vou listar as sub-opções mas as opções principais que podemos selecionar são.

  • ADO.NET
  • ASP.NET
  • Console
  • Data Binding
  • Enviroment Variables
  • File
  • Gesture
  • Lazy Initialization
  • Registry
  • ServiceModel
  • Threading
  • Tracing
  • User Prompt
  • Workflow
  • XML

Agora vamos começar a brincadeira de verdade, vamos imaginar o seguinte bloco de código, que é o mesmo do antigo anterior com alguns acréscimos.

01class Program
02{
03static void Main(string[] args)
04{
05var cliente = new Cliente();
06cliente.Nome = "Márcio";
07cliente.Idade = 26;
08cliente.DescobrirMetadeDaIdade();
09cliente.Nome = "Márcio Fábio Althmann";
10cliente.Idade = new Random().Next(1, 99);
11cliente.Idade = new Random().Next(1, 50) / 3;
12}
13}
14
15class Cliente
16{
17public string Nome { get; set; }
18public int Idade { get; set; }
19public int MetadeIdade { get; set; }
20
21public void DescobrirMetadeDaIdade()
22{
23if (Idade <= 0)
24return;
25
26MetadeIdade = Idade/2;
27}
28}

O código acima é simples, mas as duas últimas linhas onde utilizamos um Random para obter a idade é onde veremos como o IntelliTrace é interessante, quando estamos depurando algo no Visual Studio conseguimos sem problemas clicar na seta amarela que indica em qual linha estamos no momento, e arrastar a mesma para cima, e voltar o debug, mas no caso do Random isso não vai ajudar, por que quando passarmos novamente pela linha o Random será executado novamente.

Com o IntelliTrace poderemos voltar até as linhas do Random que o valor gravado não será trocado, afinal ele tem um “histórico” da execução.

Para utilizar o IntelliTrace é simples, colocamos um breakpoint e executamos o programa, quando a execução parar no breakpoint veremos algumas mudanças no Visual Studio. A primeira mudança é que ao lado da barra esquerda onde fica a marcação do breakpoint, uma nova barra é criada com botões do IntelliTrace, onde poderemos avançar e voltar os eventos ou chamadas registrados pelo IntelliTrace.

O Visual Studio também ganha uma janela nova também chamada IntelliTrace veja abaixo a janela mostrando o histórico de eventos da depuração, que é a mais simples, mas com ela também conseguimos “voltar no tempo” no nosso aplicativo (emprestei do Spoky esse termo :) ).

Nessa mesma janela podemos clicar no item Switch to Calls View que mostra de uma forma detalhado o que aconteceu com o aplicativo.

E conforme vamos navegando na lista de chamadas da janela, no editor de código o breakpoint volta ou avança na linha informada no histórico. Lembrando que poderemos voltar para a linha do Random e o valor não será modificado.

Eu iria gravar um pequeno vídeo mostrando o IntelliTrace funcionando, mas como o Spoky fez um vídeo sobre o assunto para a Copa Microsoft, clique aqui e veja o IntelliTrace funcionando, e se preparem para rir muito durante o vídeo, ficou muito bom ;) .

Abraços e até o próximo post.