Este artigo foi traduzido por máquina.

IntelliTrace

Depurando aplicativos com o IntelliTrace

Justin Marks

Baixe o código de exemplo

Como qualquer pessoa corrigir um bug no código? Definir alguns pontos de interrupção, execute o programa no depurador, fazer um pouco revisão único — e rezar o problema estiver em seu colo para poder obter com os outros elementos.

Nós já fazendo o mesmo estilo de depuração quase desde que o ENIAC foi inventado. Essa abordagem depuração tediosa e intensivo de tempo nos atuou bem, mas é tempo de depuração ficou mais fácil. Com o lançamento do Visual Studio 2010 Ultimate, o novo recurso IntelliTrace traz a depuração no século XXI, oferecendo aos desenvolvedores uma visão melhor dos ’ seus aplicativos de execução.

Muito assim como outros monitoramento e a ferramentas de rastreamento, como Process Monitor no Windows Sysinternals, Visual Studio 2010 coleta dados sobre um aplicativo durante a execução para ajudar os desenvolvedores a diagnosticar erros. Os dados coletados são conhecidos como IntelliTrace eventos. Esses eventos são coletados como parte da experiência de depuração padrão e entre outras coisas, permitem que os desenvolvedores etapa voltar no tempo para ver o que aconteceu em um aplicativo sem precisar reiniciar o depurador.

Neste artigo, eu irá apresentar a você IntelliTrace e mostrar como eles são úteis para desenvolvedores como parte de suas atividades diárias de desenvolvimento. Mostrarei como IntelliTrace fornece uma linha do tempo de eventos que ocorreram durante a execução de um aplicativo e como os desenvolvedores podem usar esses eventos depuração de auxílio. Em seguida, discutirei as configurações que os desenvolvedores podem ser alteradas para coletar um conjunto maior de informações sobre o aplicativo para obter um histórico de execução completa. Por fim, mostrarei como usar um arquivo IntelliTrace gravado anteriormente que foi criado por outra pessoa — um testador — para depurar um aplicativo, sem ter que executar o aplicativo para reproduzir o erro.

Quando a equipe do Visual Studio diagnósticos iniciado planejamento para Visual Studio 2010, passamos muito tempo falando para os clientes sobre como diagnosticar problemas em seus aplicativos. Embora todos tenham um padrão diferente e um conjunto favorito de ferramentas, um ponto foi predominantemente claro: os métodos tradicionais de diagnosticar problemas de aplicativos são difíceis, demoradas e caras. Os relatórios de bug que os desenvolvedores recebem quase nunca têm as etapas para reproduzir o problema e consistem principalmente em instruções como “ estava usando o programa e ele travou. ” No caso raro quando estão disponíveis passos reproduzem decente, pode ser enfrentados com erros que ocorrem em ambientes específicos e isso leva a um novo conjunto de problemas para resolver. Além disso, bugs geralmente são causados por um mal-entendido do funcionamento de uma estrutura ou outro código.

Com esses pontos problemáticos em mente, definimos sobre como criar um novo recurso do depurador onde foi coletadas as informações certas no momento em que o problema ocorreu. Nossa meta era manualmente aos desenvolvedores as etapas de reprodução exata e as configurações de ambiente do sistema, bem como expor o comportamento de estruturas e código de usar, para melhorar drasticamente seu diagnosability. Com o lançamento do Visual Studio 2010 Ultimate, IntelliTrace oferece uma experiência de depuração muito melhor, oferecendo aos desenvolvedores uma visão melhor o aplicativo e comportamento de estrutura, bem como a capacidade de abrir um arquivo IntelliTrace coletado por um testador para resolver situações de “ não reproduzem ”.

Apresentando o IntelliTrace

Quando um desenvolvedor precisa uma compreensão mais profunda da execução de código, IntelliTrace oferece uma forma de “ ativar a discagem ” para coletar o histórico de execução completa de um aplicativo.

Para ilustrar isso, usarei o aplicativo de demonstração da Tailspin Toys para mostrar a você o tipo de informação que IntelliTrace pode coletar. Para começar, eu irá abrir a solução no Visual Studio e iniciar a depuração. Quando o site for iniciado, eu irá navegar até a página “ sobre nós ” e receber um erro do servidor. Como você pode diagnosticar o problema? Se algo como eu, seu primeiro instinto é configurar o arquivo web.config para não mostrar erros personalizados e, em seguida, reinicie o depurador. Mas e se esse problema é intermitente? Não seria ótimo se você apenas poderia dividir o processo nesse momento, após o erro ocorreu e obter um histórico do que aconteceu no aplicativo do Visual Studio?

Enquanto você estiver depurando, IntelliTrace coleta dados sobre um aplicativo gerenciado em segundo plano, incluindo informações de muitos componentes de estrutura de como ADO.NET, ASP.NET e System.XML. Esses eventos IntelliTrace permitem que o desenvolvedor para ver o que ocorreu anteriormente durante a execução e mais importante, “ entrar novamente no tempo ” para ver estados anteriores do aplicativo sem precisar reiniciar o depurador. Quando eu violar o depurador, eu estou imediatamente apresentada uma lista seqüencial de eventos IntelliTrace que foram coletados (consulte Figura 1).

image: Diagnostic Information Collected by IntelliTrace

Figura 1 Informações de diagnóstico coletadas por IntelliTrace

Como você pode ver de Figura 1, a lista de eventos IntelliTrace vai muito além dos acessos de arquivo e registro como você deseja ver no Process Monitor. Nós definidos quase 150 IntelliTrace eventos para o Visual Studio 2010 e planejamos aumentando esta lista com eventos adicionais ao longo do tempo. Figura 2 destaca algumas das categorias de eventos coletados pelo IntelliTrace.

Figura 2 Eventos IntelliTrace estão disponíveis através do Microsoft .NET Framework

Categoria Descrição e os dados coletados
ADO.NET Eventos em torno de execução de consultas SQL, o comando executado, bem como a seqüência de caracteres de conexão.
ASP.NET Eventos em torno pipeline do ASP.NET, bem como processamento de solicitação e de redirecionamento.
Console Saída do console.
Vinculação de dados Windows Forms a vinculação de dados.
Variáveis de ambiente Avaliação e a recuperação de variáveis de ambiente do processo.
Arquivo Criação, exclusão e acesso dos arquivos.
Gestos Ações do usuário é executada em relação aos controles comuns de formulários da Web, Windows Forms e WPF. Como coletar dados sobre a interação com o controle, clicar em um desses eventos automaticamente redireciona para o manipulador de eventos apropriado.
Inicialização lenta Inicialização de variáveis ociosamente carregadas.
Registro Criação, exclusão e consulta de informações do registro.
Modelo de serviço Chamadas de serviço da Web do WCF.
Threading Enfileiramento de itens de trabalho do usuário e as tarefas de computação paralela.
Rastreando O depurador de saída de rastreamento e declarações.
Prompt do usuário Exibição de caixas de mensagem de Windows Forms e WPF bem como o resultado da caixa de diálogo.
Fluxos de trabalho Instanciação de atividade e conclusão.
XML Carregamento do arquivo XML.

A janela IntelliTrace me permite filtrar a lista de eventos coletados por categoria — categorias mostradas na Figura 2 — ou pelo thread. Além disso, posso fazer pesquisas com base em texto para localizar eventos importantes que eu possa ir rapidamente para. Como IntelliTrace também coleta exceções, posso fazer uma pesquisa com o termo “ exceção ” e a lista será filtrado para Mostrar-me a exceção que causou a página de erro do ASP.NET, onde ela foi lançada e onde foi detectada. Nesse caso, o erro foi causado por um XMLException ao analisar uma entidade na linha 10, posicione 53 (consulte Figura 3). Quando clico no evento exceção gerada, outras janelas do depurador, como janelas pilha de chamadas e Watch, exibido dados relativos ao evento propriamente dito, portanto, é como se você for depurando no instante exceção foi lançada. Além disso, assim como a movimentação de uma pilha de chamadas, o editor será aberto o arquivo de origem apropriado e realce a linha de código correspondente ao evento em laranja para representar IntelliTrace.

image: An XMLException Was Thrown While Parsing an Entity on Line 10, Position 53

Figura 3 Um XMLException foi lançada durante a análise de uma entidade na linha 10, posição 53

IntelliTrace tenha dado uma informação útil para diagnosticar o problema: um arquivo XML foi carregado e um caractere específico no XML era incorreto ou inesperado. Mas ainda Don sei qual arquivo foi acessado. Uma vez, IntelliTrace coletou as informações de que preciso — ou seja, o acesso ao arquivo.

Observando novamente a janela IntelliTrace Figura 3, eu posso ver que o evento antes de ser a exceção é um evento de carregamento de arquivo XML para “ Content\Xml\Ads.xml. ” Esse deve ser o arquivo que está causando o erro. Eu pode facilmente abrir este arquivo no Visual Studio. Observando a linha 10, posicione a 53, eu vê que há de fato um erro neste arquivo, ou seja, que “ & b = 1 ” é inválido para o elemento NavigateUrl XML. Removendo caracteres inválidos, o site agora deve carregar corretamente.

Agora quero que você pense sobre a última exceção não tratada depurado com técnicas tradicionais de depuração. Se fosse uma exceção como esse, você teria visto no qual a exceção ocorreu, mas definitivamente não é o motivo exato ou o caractere inválido. Esta é a chave para IntelliTrace — oferece melhores informações para diagnosticar problemas mais rápidos e fácil. Você tem coisas mais importantes para fazer que desperdício procura seu tempo ao redor para obter informações.

Usando IntelliTrace para controlar eventos de depurador

Apenas mostrei a você como IntelliTrace coleta exceções, ambos tratadas e sem tratamento, que ocorrem durante a execução do aplicativo e como IntelliTrace eventos em toda a estrutura podem fornecer idéias sobre o que fiz um aplicativo sob o capô. Mas não é tudo. IntelliTrace também coleta eventos causados pelo depurador, ou seja, os pontos de interrupção, tracepoints e revisão eventos.

Uma das técnicas de depuração mais comuns é definir um ponto de interrupção próxima ao ponto onde você acha que um problema existe e, em seguida, depurar o código inspecionando variáveis alterar. Isso é especialmente útil ao depurar por meio de loops, assistindo a uma variável alterar para um valor específico. Infelizmente, a maioria dos desenvolvedores estiver impaciente e libra F10 para depurar o código, apenas para encontrar o que eles apresentado muito rapidamente. Em seguida, eles precisam reiniciar a sessão de depuração e tente novamente. Com IntelliTrace, todos os pontos de interrupção e revisão eventos forem registrados, junto com seus dados contextuais, portanto, você pode navegar rapidamente para pontos em que foi interrompida antes.

Se clico em um desses eventos do depurador, inspeção janela irá Mostrar-me todos os dados que eu anteriormente observou, incluindo valores que eu avaliada em locais, assista e automóveis janelas, bem como QuickWatch e DataTips.

Freqüentemente, código desenvolvido e implantado anteriormente não tem o rastreamento necessário incluído para ajudar a depurar problemas que podem surgir. Pontos de interrupção oferecem a capacidade de ver mais do que está acontecendo nos bastidores do aplicativo. Mas na maioria das vezes, o desenvolvedor não precisa parar no ponto de interrupção; em vez disso, ele deseja coletar alguns dados e continuar a execução. Isso acontece especialmente dentro de loops de onde você queira que o registro do valor iterador sem ter que parar em cada iteração. Nesses cenários, tracepoints são uma excelente alternativa. Tracepoints permitem que o desenvolvedor fazer o depurador executa uma ação personalizada; ou seja, executar uma macro ou imprimir uma mensagem de rastreamento, em vez de quebrar a execução. Com IntelliTrace, a saída tracepoints é coletada e pode ser exibida na interface do mesma como outros eventos IntelliTrace (consulte Figura 4).

image: Tracepoints Can Dynamically Add Trace Outputs to Code

Figura 4 Tracepoints podem adicionar dinamicamente resultados de rastreamento ao código

A ativação a discar

Por padrão, IntelliTrace estiver configurado para coletar apenas os eventos IntelliTrace. Essa é uma solução de Low sobrecarga, mas não fornece um histórico completo de execução do seu aplicativo. Quando você precisar de um nível maior de informações, IntelliTrace pode ser configurado para coletar mais dados. Como outras configurações do depurador, IntelliTrace pode ser configurado na caixa de diálogo Opções, acessível pelo menu Ferramentas (consulte Figura 5).

image: IntelliTrace Settings Can Be Changed from the Options Dialog

Figura 5 IntelliTrace configurações podem ser alteradas da caixa de diálogo Opções

Escolhendo “ IntelliTrace eventos e informações chamada ” configura IntelliTrace coletar que insira não apenas o IntelliTrace eventos, mas também informações de chamada em cada método, saída e callsite como parâmetros e valores de retorno nesses locais. Infelizmente, ativar esse modo faz com que editar-e-continuam a ser desabilitado durante a sessão de depuração. Obviamente, a sua escolha para coletar mais informações significa que há mais sobrecarga para o seu aplicativo. Trabalhamos muito difícil para encontrar o equilíbrio entre desempenho e informações úteis, mas fornecemos a você controle total.

Cada sessão de depuração cria um arquivo IntelliTrace armazenado em disco é automaticamente limpo quando o Visual Studio fecha. O painel IntelliTrace Advanced alcançado através da caixa de diálogo Opções permite configurar onde você deseja que os arquivos criados durante a depuração a ser armazenado e tamanho podem ser. Se o tamanho máximo do arquivo for atingido, um buffer circular é usado para compactar e truncar as informações armazenadas no registro de IntelliTrace, reduzindo assim o espaço em disco do arquivo de log. As duas outras configurações no painel Avançado permitem ocultar a medianiz de navegação e desativar pesquisa do Team Foundation Server (TFS) de símbolos disponíveis.

Devido a questões de desempenho de apenas um subconjunto dos eventos definidos IntelliTrace tiver sido habilitado para a coleção por padrão. Alguns eventos que podem deseja considerar a ativação estão saída do console, acessos de arquivo, a inicialização lenta, acessos de registro e eventos threads. Você pode ativar ou desativar uma categoria inteira de eventos ou eventos individuais no painel de IntelliTrace eventos de caixa de diálogo Opções.

O painel Opções de IntelliTrace final permite que você controle quais módulos IntelliTrace coleta dados do. Todos os módulos, exceto os enviados pela Microsoft como parte do Microsoft .NET Framework e Visual Studio são coletados por padrão. Uma grande quantidade de dados pode ser coletada dessa maneira, portanto, você pode considerar alterar esta lista para uma lista de inclusão e especificar somente os módulos que você se preocupa. Por outro lado, se você usar algumas bibliotecas comuns de terceiros, talvez queira excluir essas, porque eles estão fora do seu controle.

Investigando um código de erro do usuário

Agora que verifiquei se a página “ sobre nós ” está operacional no aplicativo de demonstração, let’s não esqueça de que carrinho de compras está funcionando bem. Quando adiciono um avião de papel ao carrinho para compra, vejo que na verdade ele foi corretamente adicionado ao carrinho. No entanto, quando eu repetir essa ação para adicionar uma segunda instância do item ao carrinho, a quantidade ainda mostra como 1, embora esperada para mostrar 2. Desejo usar o depurador para solucionar o problema sem ter que reiniciar, mas a lista de eventos IntelliTrace provavelmente não me ajudar nesse cenário (todo o trabalho foi feito no meu código, não o .NET Framework). Isso é que o modo de IntelliTrace “ IntelliTrace eventos e informações chamada ” pode ajudar a mostrar um histórico de execução do meu aplicativo. Let’s invadir o depurador e ver quais recursos adicionais do IntelliTrace podem ser utilizadas para resolver esse problema.

Inicio a hipótese de que algo saiu errado com a minha lógica de “ adicionar item ao carrinho ”. Como esse é um aplicativo do MVC (Model-View-Controller), não há nenhum manipulador de eventos para o clique do botão, mas em vez disso, uma mensagem POST foi enviada e manipulada pelo MVC. Essa mensagem POST foi registrada como um evento IntelliTrace e, embora não seja útil em si, uso o evento como um ponto de partida para meu investigação. Clicando neste evento IntelliTrace, pode saltar para o ponto da sessão de depuração onde começou a lógica de “ Add Item ”. Eu pode rapidamente localizar essas mensagens POST, pesquisando a palavra “ POST ” na janela IntelliTrace. Esta ação foi realizada duas vezes pelo usuário então, como o esperado, dois resultados são retornados de pesquisa. Depois de selecionar o segundo evento, limpando o campo de pesquisa mostra-la em contexto com todos os eventos coletados (consulte Figura 6).

image: The IntelliTrace Events View Can Help You Start Your Investigation

Figura 6 IntelliTrace eventos Exibir pode ajudar você iniciar a investigação

Agora que tenho contexto sobre onde estou na linha de tempo do aplicativo, desejo se aprofundar mais profunda e obter uma compreensão das chamadas de método que foram feitas. No modo de exibição de eventos, pode alternar modos de exibição para ver o histórico de execução. Clicando no link “ switch para IntelliTrace chamadas exibir ” na parte superior da janela, pode passar para o modo de exibição de chamadas para ver um histórico de execução completa de aplicativo (consulte Figura 7). A qualquer momento, eu pode voltar ao modo de exibição de eventos, clicando no link “ switch para IntelliTrace eventos Exibir ”.

image: The IntelliTrace Calls View Shows the Execution History of the Application

Figura 7 O modo de exibição de chamadas IntelliTrace mostra o histórico de execução do aplicativo

Um mecanismo para navegar o histórico de execução é usar o modo de exibição de chamadas para detalhar as chamadas de que interesse investigando. Sempre que você clicar duas vezes em uma chamada na parte inferior metade do modo de exibição de chamadas, a chamada é exibida na parte inferior da metade superior do modo de exibição e as sincronizações de ponteiro de instrução no editor de código para a entrada do método aponte da chamada, assim como na depuração em tempo real quando ir até a pilha de chamadas. Você pode continuar a navegar e orientá-lo para trás e encaminhar dados coletados pelo histórico IntelliTrace em dessa maneira. Navegar em modo de exibição de chamadas é um mecanismo rápido para obter uma visão geral sobre o histórico de execução e fazer grandes saltos em torno da base de código.

Usando o modo de exibição de chamadas é apenas um método de navegação. Também posso navegar através da execução passo o código. Na medianiz da janela de código fonte, há um conjunto novo de controles de estilo DVR que lhe permitem depurar o código, como em uma sessão de depuração tradicional (consulte Figura 8). Porque estou no modo de depuração IntelliTrace, revisão é gravados os eventos que ocorrem no cada callsite, função inserir e função exit. Obviamente, F10/F11 funcionar conforme o esperado se preferir que os controles de teclado.

image: The Navigation Bar Offers DVR-Style Controls to Let You Step Through Your Application

Figura 8 Barra de navegação oferece controles de estilo de DVR para deixar você passo através do aplicativo

Esses dois métodos de navegação são ótimos para investigação, mas às vezes, você sabe exatamente onde você tiver definiria o ponto de interrupção. No caso desse aplicativo, eu souber o nome da função onde o item é adicionado ao carrinho: Kona.Model.ShoppingCart::AddItem. O que eu realmente quero fazer é ir para pela segunda vez que essa função foi chamada e inspecionar os valores passados para e retornado da função. Mais especificamente, quero a busca a linha de código em que a chamada de função “ AdjustQuantity ” foi feita. Obviamente, IntelliTrace também suporta essa técnica de navegação.

No editor, pode clicar com o botão direito do mouse em linha que deseja procurar e escolha “ pesquisa para esta linha no IntelliTrace ” no menu de contexto (consulte Figura 9). A pesquisa começa e os resultados são apresentados em uma barra de pesquisa na parte superior da janela do editor, permitindo que eu navegar entre os resultados da pesquisa. Após a sincronização para o segundo resultado da pesquisa, meu ponteiro de instrução está certa onde quero que ele seja e eu pode investigar a chamada utilizando janelas do depurador (consulte Figura 10).

image: The Search Functionality Lets You Jump Right to a Specific Function Call

Figura 9 A funcionalidade de pesquisa permite que você ir à direita para uma chamada de função específica

image: Search Results Are Displayed in a Search Results Bar at the Top of the Editor Window

Figura 10 Resultados da pesquisa são exibidos em uma barra de resultados de pesquisa na parte superior da janela do Editor

Procurando na janela Variáveis locais neste ponto, você pode ver o carrinho está sendo ajustado para que seja de nova quantidade do produto no carrinho de 1. Este é o bug; eu estava esperando a quantidade ajustada 2. Observando a linha de código, a quantidade de nova parâmetro deve levar em conta não só “ item.Quantity ”, mas a variável de “ quantidade ” passado para chamada de função. A correção é alterar a chamada de função:

AdjustQuantity(product, item.Quantity + quantity);

Eliminando o abominável ‘ não reproduzido ’ cenário

Com muita freqüência, os testadores e desenvolvedores participam de dança de “ não reproduzem ” em que o testador arquivos um bug de que algo está quebrado, apenas para que ele back resolvido com um comentário “ não reproduzem na minha máquina. ” Nem o desenvolvedor o testador deseja participar de dança, mas Don têm o conjunto certo de ferramentas para ajudá-los a se comunicar o que aconteceu no ponto da falha ocorreu. É por isso que o sistema é projetado para que as mesmas informações de diagnóstico que IntelliTrace fornece para o desenvolvedor durante uma sessão de depuração possam ser coletadas durante a execução de testes manuais por meio do Microsoft Test Manager (MTM).

Let’s revisitar o primeiro cenário, depurado, onde a página “ sobre nós ” falhou ao processar corretamente. Se um testador registrada esse bug, ele provavelmente teria um título como “ Application erro ao exibir o sobre a página, ” e talvez, se o desenvolvedor tiver sorte, uma captura de tela do erro deve ser anexada. Se você recebeu um erro como este hoje, como pode você para depurá-lo? Provavelmente, você poderia carregar solução do aplicativo de controle de origem e reproduzir o problema na sua máquina do desenvolvedor. Nesse caso, você poderá depurar o problema e resolve o problema, mas pense de quanto tempo isso levaria. Ou, se o problema foi causado por uma diferença na configuração entre seu computador e máquina do Testador? Os desenvolvedores são muito mais produtivos durante a depuração de problemas em vez de configurar ambientes de reprodução.

Com o Visual Studio 2010, o MTM tenha dado testadores a capacidade de criar, gerenciar e executar testes manuais e automatizadas convenientemente. Mas não é tudo faz a ferramenta. MTM possibilitam que os testadores têm adaptadores de dados de diagnóstico coletar as informações em segundo plano enquanto um teste está sendo executado. Por exemplo, você pode coletar automaticamente uma gravação de vídeo do teste que está sendo executado para que o desenvolvedor possa ver exatamente o que o testador viu. Outros coletores incluem a capacidade de coletar informações do sistema e logs de eventos de caixa que está sendo testada no.

Adicionamos um adaptador de dados de diagnóstico IntelliTrace coletar automaticamente IntelliTrace arquivos em segundo plano. Quando o testador falha uma etapa de teste e optar por arquivar um bug, o arquivo IntelliTrace coletado é carregado para TFS automaticamente e vinculado ao bug. Isso permite ao desenvolvedor um conjunto muito mais sofisticado de informações para depurar com o que simplesmente um conjunto de etapas de reprodução. Quando o desenvolvedor abre arquivo IntelliTrace vinculado o bug, ele deu uma experiência semelhante à depuração um mini-despejo, mas sobre a linha do tempo inteira do aplicativo, não apenas um point-in-time quando o aplicativo travou. IntelliTrace dados podem ser obtidos de qualquer aplicativo gerenciado em agentes de teste local ou remoto, incluindo aplicativos ASP.NET em execução no IIS.

Quando abro um bug do TFS, o MTM foi adicionado automaticamente reproduzem etapas baseiam as etapas de teste manual descritas pelo testador. O que é ainda mais fria é que se eu examinar a guia “ todos os links ” do bug (consulte Figura 11), vejo que um arquivo IntelliTrace também foi coletado. Ao clicar duas vezes nesse arquivo, eu sou ajustado para um modo de exibição de página de resumo do arquivo IntelliTrace (consulte Figura 12).

image: Collected IntelliTrace Files Are Accessible Through the “All Links” Tab

Figura 11 Arquivos IntelliTrace coletados estão acessíveis por meio da guia “ todos os links ”

image: The IntelliTrace Summary Provides an Overview of What Data Was Collected

Figura 12 O resumo IntelliTrace fornece que uma visão geral de quais dados foi coletada

A página de resumo me dá um grande volume de informações sobre o que o arquivo IntelliTrace contém. Na parte superior da página, eu sou fornecido um modo de exibição da linha do tempo dos threads em aplicativo. Se eu expandir a seção lista de threads “ ” da página de resumo, posso ver os mesmos dados em um formato tabular. Clicando duas vezes em um thread serão inicie uma sessão de depuração do arquivo IntelliTrace e defina meu ponteiro de instrução para o início do thread.

Eu estou também recebe uma lista de todas as exceções coletados em arquivo IntelliTrace. Se selecionar uma exceção, uma linha laranja vertical aparecerão no cronograma thread mostrando onde a exceção ocorrer no tempo. Clicar duas vezes em uma exceção inicia uma sessão de depuração IntelliTrace e o evento de exceção será selecionado no modo de exibição de eventos IntelliTrace. Ainda mais para baixo na página de resumo, posso ver uma lista de todos os eventos de teste correspondentes as etapas manuais reproduza. O resultado de cada etapa também é exibido. Clicar em um desses eventos também coloca uma linha vertical na linha da tempo do thread e clicando duas vezes em um evento inicia um IntelliTrace selecionando o evento mais próximo possível de sessão de depuração. A parte inferior da página Resumo mostra uma lista de sistema informações coletadas sobre o computador ao qual o aplicativo testado estava em execução e abaixo que é uma lista de todos os módulos carregados no processo juntamente com seu caminho de arquivo.

Você pode estar se perguntando, faz esse trabalho na versão se baseia? É claro! Além disso, você Don precisa ter acesso aos símbolos ao coletar ou exibir dados IntelliTrace. Símbolos são necessários apenas para vincular os dados coletados a arquivos de origem, de forma que eles são úteis quando você abrir a sessão de depuração.

O Visual Studio 2010 e TFS adicionou suporte para o servidor de origem e de símbolo, portanto, se seu aplicativo foi criado como parte do sistema, a versão correta de símbolos de compilação os TFS e código-fonte automaticamente será feito o download do TFS conforme a necessidade IntelliTrace. Você Don precisa saber até o caminho do servidor de símbolos.

Assim que você iniciar uma sessão de depuração da página de resumo, o depurador funciona como faria para uma sessão de depuração em tempo real (consulte Figura 13). A maioria das janelas do depurador estão disponíveis para você e você pode navegar para qualquer dado que IntelliTrace tenha coletado.

image: When Debugging Starts from the Summary Page, Visual Studio Operates Just Like a Live Debugging Session

Figura 13 Quando a depuração começa na página Resumo, Visual Studio opera apenas como uma sessão de depuração ao vivo

Resumo

Neste artigo, você viu como IntelliTrace poderá melhorar consideravelmente suas atividades diárias de desenvolvimento e sua capacidade de forma rápida e fácil diagnosticar problemas sem precisar reiniciar o aplicativo e depurar com a técnica tradicional inspecionar da etapa de quebra de. Também mostrei a você como uma organização pode reduzir o número de bugs de “ não reproduzem ”, coletando dados IntelliTrace durante o teste, permitindo que os desenvolvedores depurar problemas off-line sem acesso a uma reprodução ao vivo. Esse é apenas uma breve introdução ao recurso e medida se tornam mais familiarizado com o poder do IntelliTrace, ele será iniciado alterar a maneira como você depurar.

Justin Marks  iniciados na Microsoft em 2002 depois de receber seu BS em ciência e engenharia pelo MIT. Ele trabalhou em MSN.com como engenheiro de sistemas, o Windows como engenheiro de design de software em teste e agora Visual Studio como gerente de programa. Como PM na equipe do diagnóstico, marcas tem trabalhado o recurso IntelliTrace para a próxima versão do Visual Studio 2010.

Graças aos seguintes especialistas técnicos para revisar este artigo: Bill Boris, David Gray, Habib Heydarian e John Robbins