A versão Visual Studio 2010 Ultimate possui um novo recurso IntelliTrace (rastreamento inteligente). O IntelliTrace foi introduzido no Visual Studio para acelerar a depuração de aplicativos .NET. Ele rastreia eventos e métodos predefinidos durante o processo de execução e é efetivamente passado para o executor de depuração. , transmitindo rapidamente o status e diversas informações do programa durante a execução para ajudar os desenvolvedores a depurar melhor o programa e encontrar problemas rapidamente. Na verdade, antes do Visual Studio 2010, o Microsoft Visual Stuido nos ajudou a herdar muito bem as ferramentas de depuração, como monitorar variáveis, visualizar pilhas, etc., e permitir definir pontos de interrupção para depuração de etapa única, etc. Tudo isso é muito útil para os desenvolvedores entenderem o status do programa em diferentes processos de execução e detectarem antecipadamente se ele está sendo executado de acordo com a lógica real. E mais, podemos encontrar o problema monitorando o status do programa após os pontos de interrupção. O problema com isso é que alguns erros lógicos podem ocorrer antes da execução do ponto de interrupção e podem não ser rastreáveis. Os desenvolvedores devem interromper a depuração atual, redefinir o ponto de interrupção e iniciar a depuração, e esse processo experimental geralmente leva muito tempo para encontrar o local correto para definir o ponto de interrupção. O IntelliTrace rastreia e exibe de forma inteligente e automática algumas informações de depuração e status do programa para os desenvolvedores, reduzindo assim a necessidade dos programadores encontrarem pontos de interrupção apropriados para rastrear e monitorar o status de execução do programa.
O Visual Studio nos fornece duas maneiras de controlar a fonte de conteúdo das informações que ele coleta. Uma é apenas eventos do IntelliTrace, que coleta apenas dados relacionados a eventos de rastreamento inteligente e interrupções de depuração; a outra são eventos do IntelliTrace e informações de chamada, que coletarão dados; além do IntelliTrace Vários dados sobre a entrada e saída de uma chamada de método fora dos eventos. Vamos dar uma olhada em como definir as opções de rastreamento do IntelliTrace no Visual Studio 2010.
Vá para Ferramentas-->Opções-->IntelliTrace. Ele está habilitado por padrão, porém, captura apenas eventos porque a captura de eventos é barata. No entanto, quando você começa a rastrear todas essas informações de chamadas, o valor real começa a aparecer. Cada vez que você depurar, o IntelliTrace aparecerá. Você pode usar esta ferramenta de depuração histórica durante a depuração dinâmica. Digamos que estou lá e tenho um ponto de interrupção, mas quero fazer backup e redesenhar esse ponto de interrupção. Posso usar o IntelliTrace para realizar essa tarefa.
Outras pessoas que capturaram seus processos de depuração usando o IntelliTrace podem enviar a você as gravações e os arquivos .dlls e pdbs, e você pode reproduzir seus processos. O processo pode ir para o banco de dados (você não tem o banco de dados), pode estar configurado de uma forma que você não pode copiar, pode estar em uma rede que você não pode alcançar, mas você não não precisa se preocupar porque você tem os registros e os arquivos .dlls e pdbs que podem ser reproduzidos.
Claro, é melhor ter o código-fonte, porque assim você poderá ver o código como se estivesse depurando-o em sua própria máquina. Isso é ótimo para aquelas falhas misteriosas que funcionam bem na sua máquina, mas não nas máquinas de outras pessoas. Também é muito bom para situações multithread e, à medida que você avança no aplicativo, a falha do software desaparece, mas quando executado em velocidade normal, a falha do software aparece novamente.
Por padrão, o IntelliTrace coleta apenas eventos relacionados ao IntelliTrace. Isso mantém os dados coletados pequenos e o impacto no desempenho é mínimo. Quando você opta por coletar também dados em chamadas de métodos, além do aumento do espaço ocupado pelos dados coletados temporariamente, o impacto no desempenho também é maior. Embora os detalhes recolhidos variem, ambos os métodos recolhem alguns dados comuns. Por exemplo, ele sempre coletará informações do sistema quando o processo de coleta for iniciado pela primeira vez, eventos de carregamento e descarregamento de módulos, horários de início e término do thread, etc. À medida que ocorrem eventos de módulos e threads, as informações da janela de depuração de módulos e threads podem ser atualizadas corretamente. Além disso, em qualquer modo, os dados também serão coletados nos pontos de interrupção de depuração, e os tipos de dados e objetos básicos coletados serão inspecionados e revisados durante a depuração, e seus valores poderão ser alterados.
De modo geral, o depurador IntelliTrace é feito sob medida para desenvolvedores de programas. Por meio de sua função exclusiva de depuração histórica, ele fornece aos desenvolvedores uma função de controle de processo de rastreabilidade de arrependimento. Por exemplo, o que devo fazer se uma exceção ocorreu há 10 minutos no programa durante o desenvolvimento. Se no passado isso geralmente era feito chamando manualmente a instrução Debug.Write, agora não há necessidade! Como as funções de depuração histórica em muitas ferramentas de desenvolvimento são muito semelhantes, por meio do IntelliTrace na versão oficial do VS2010, os programadores podem não apenas ver o status atual do programa, mas também verificar eventos gerados em determinadas circunstâncias e até mesmo isolar pontos de falha em histórico de aplicativos. Portanto, após habilitar a depuração histórica, a versão oficial do VS2010 pode capturar a pilha de chamadas e variáveis relacionadas. Podemos voltar 10 minutos ou mais antes do programa ser salvo para verificar diversas situações em que ocorrem exceções e falhas no programa. Como por padrão o programa salva apenas tipos de chaves, o desenvolvedor pode optar por registrar todos os parâmetros, objetos e variáveis globais. Portanto, o IntelliTrace exibirá ativamente os principais eventos durante a execução do programa, como exceções de código, acesso a arquivos, depuração em tempo real, etc.