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.
03 | static void Main(string[] args) |
05 | var cliente = new Cliente(); |
06 | cliente.Nome = "Márcio"; |
08 | cliente.DescobrirMetadeDaIdade(); |
09 | cliente.Nome = "Márcio Fábio Althmann"; |
10 | cliente.Idade = new Random().Next(1, 99); |
11 | cliente.Idade = new Random().Next(1, 50) / 3; |
17 | public string Nome { get; set; } |
18 | public int Idade { get; set; } |
19 | public int MetadeIdade { get; set; } |
21 | public void DescobrirMetadeDaIdade() |
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.