Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O que é depuração de viagem no tempo?
A TTD (Depuração de Viagem no Tempo) é uma ferramenta que captura um rastreamento do processo conforme ele é executado e o reproduz posteriormente, tanto para frente quanto para trás. O TTD ajuda você a depurar problemas permitindo que você "rebobine" a sessão do depurador, em vez de ter que reproduzir o problema até encontrar o bug.
O TTD permite que você volte no tempo para entender melhor as condições que levaram ao bug e reproduzi-lo várias vezes para aprender a melhor forma de corrigir o problema.
O TTD tem vantagens em relação aos arquivos de despejo de falha, que muitas vezes perdem o estado e o caminho de execução que levaram à falha final.
Se você não conseguir descobrir o problema por conta própria, poderá compartilhar o rastreamento com um colega de trabalho para que eles possam examinar exatamente o que você está olhando. Esse recurso facilita a colaboração mais do que a depuração ao vivo, pois as instruções gravadas são as mesmas, enquanto os endereços e a execução do código diferem em diferentes computadores. Você também pode compartilhar um ponto específico no tempo para ajudar seu colega de trabalho a descobrir por onde começar.
O TTD é eficiente e trabalha para adicionar o mínimo de sobrecarga possível, pois captura a execução de código em arquivos de rastreamento.
O TTD inclui um conjunto de objetos do modelo de dados do depurador que você pode usar para consultar o rastreamento com LINQ. Por exemplo, você pode usar objetos TTD para localizar quando um módulo de código específico foi carregado ou localizar todas as exceções.
Requisitos
A Depuração de Viagem no Tempo é integrada ao WinDbg, fornecendo uma experiência perfeita de gravação e reprodução.
Para usar o TTD, você precisa executar o depurador com permissões elevadas. Instale o WinDbg usando uma conta que tenha privilégios de administrador e use essa conta ao gravar no depurador. Para executar o depurador com permissões elevadas, selecione e segure (ou clique com o botão direito do mouse) no ícone WinDbg no menu Iniciar e selecione Mais > Executar como Administrador.
Notas de versão
O TTD continua evoluindo. Para obter as informações mais recentes, consulte as notas de versão de depuração de viagem no tempo.
A gravação pode conter informações de identificação pessoal ou relacionadas à segurança
O arquivo de rastreamento criado que contém a gravação pode conter informações de identificação pessoal ou relacionadas à segurança, incluindo, mas não necessariamente se limitando a caminhos de arquivo, registro, memória ou conteúdo de arquivo. As informações exatas dependem da atividade do processo de destino enquanto foram registradas. Esteja ciente disso ao compartilhar arquivos de gravação com outras pessoas.
TTD.exe utilitário de gravação de linha de comando
Além de registrar rastreamentos na interface do usuário do WinDbg, há um utilitário de linha de comando TTD.exe disponível para registrar um rastreamento.
Você pode ter cenários em que apenas o gravador de linha de comando TTD é necessário: gravação em um PC sem instalar o depurador, cenários avançados de gravação, automação de teste, etc. Nesses cenários, você pode instalar apenas o gravador de linha de comando TTD por meio de uma URL. Para obter mais informações, consulte Depuração de viagem no tempo - TTD.exe utilitário de linha de comando.
Comparação de ferramentas de depuração
Esta tabela resume os prós e contras das diferentes soluções de depuração disponíveis.
| Abordagem | Vantagens | Desvantagens |
|---|---|---|
| Depuração ao vivo | Experiência interativa, vê o fluxo de execução, pode alterar o estado de destino, ferramenta familiar em ambiente familiar. | Interrompe a experiência do usuário, pode exigir esforço para reproduzir o problema repetidamente, pode afetar a segurança, nem sempre é uma opção em sistemas de produção. Com a reprodução difícil de trabalhar de volta do ponto de falha para determinar a causa. |
| Despejos | Sem codificação inicial, baixa intrusão, com base em gatilhos. | Instantâneos sucessivos ou despejos ao vivo fornecem uma exibição simples "ao longo do tempo". A sobrecarga é essencialmente zero se não for usada. |
| Telemetria e logs | Leve, muitas vezes vinculado a cenários de negócios / ações do usuário, amigável ao aprendizado de máquina. | Os problemas surgem em caminhos de código inesperados (sem telemetria). Falta de profundidade de dados, compilados estaticamente no código. |
| Depuração de Viagem no Tempo (TTD) | Ótimo em bugs complexos, sem codificação antecipada, depuração repetível offline, análise amigável, captura tudo. | Grande sobrecarga em tempo recorde. Pode coletar mais dados necessários. Os arquivos de dados podem se tornar grandes. |
Treinamento em vídeo
Para saber mais sobre o TTD, confira estes vídeos.
Ferramentas de Desfragmentação 185 - Ivette e JamesP repassam os conceitos básicos do TTD e demonstram alguns recursos no WinDbg
Ferramentas de Desfragmentação 186 - Jordi e JCAB demo mais grandes recursos do TTD no WinDbg
CppCon (YouTube) - Jordi, Ken e JamesM apresentaram TTD no WinDbg no CppCon 2017
Noções básicas do arquivo de rastreamento
Tamanho do arquivo de rastreamento
O arquivo de rastreamento pode ficar grande. Você precisa ter certeza de que há espaço livre suficiente disponível. Se você gravar um programa por alguns minutos, os arquivos de rastreamento podem crescer rapidamente para vários gigabytes. O TTD não define um tamanho máximo para arquivos de rastreamento para permitir cenários complexos de execução longa. A recriação rápida do problema mantém o tamanho do arquivo de rastreamento o mais pequeno possível.
Arquivos de rastreamento e indexação
Um arquivo de rastreamento (.run) armazena a execução do código durante a gravação.
Quando você interrompe a gravação, o sistema cria um arquivo de índice (.idx) para otimizar o acesso às informações de rastreamento. O WinDbg também cria automaticamente arquivos de índice quando abre arquivos de rastreamento.
Os arquivos de índice podem ser grandes, normalmente duas vezes maiores que o arquivo de rastreamento.
Você pode recriar o arquivo de índice do arquivo de rastreamento usando o !tt.index comando.
0:000> !tt.index
Successfully created the index in 10ms.
Os erros de gravação e outros dados de saída de gravação vão para um arquivo de log do WinDbg.
Você armazena todos os arquivos de saída em um local configurado. O local padrão está na pasta do documento do usuário. Por exemplo, para o Usuário1, os arquivos TTD são armazenados aqui:
C:\Users\User1\Documents
Para obter mais informações sobre como trabalhar com arquivos de rastreamento, consulte Depuração de Viagem no Tempo – Trabalhando com arquivos de rastreamento.
Coisas a serem observadas
Incompatibilidades com antivírus
Você pode encontrar incompatibilidades devido à forma como o TTD conecta-se a processos para registrá-los. Normalmente, surgem problemas com antivírus ou outro software do sistema que tenta rastrear e sombrear chamadas de memória do sistema. Se você tiver problemas com a gravação, como uma mensagem de permissão insuficiente, tente desabilitar temporariamente qualquer software antivírus.
Outros utilitários que tentam bloquear o acesso à memória também podem ser problemáticos. Por exemplo, o Kit de Ferramentas da Experiência de Mitigação Aprimorada da Microsoft.
Outro exemplo de um ambiente que entra em conflito com o TTD é a estrutura do aplicativo Electron. Nesse caso, o rastreamento pode ser registrado, mas um deadlock ou uma falha do processo que está sendo monitorado também é possível.
Somente modo de usuário
Atualmente, o TTD dá suporte apenas à operação de modo de usuário, portanto, você não pode rastrear um processo de modo kernel.
Reprodução somente leitura
Você pode viajar no tempo, mas não pode mudar a história. Você pode usar comandos de memória de leitura, mas não pode usar comandos que modificam ou gravam na memória.
Processos protegidos pelo sistema
Alguns processos protegidos pelo sistema Windows, como o processo de PPL (Protected Process Light), são protegidos. O TTD não pode se injetar no processo protegido para permitir a gravação da execução do código.
Impacto da gravação no desempenho
A gravação de um aplicativo ou processo afeta o desempenho do PC. A sobrecarga de desempenho real varia de acordo com a quantidade e o tipo de código que está sendo executado durante a gravação. Você pode esperar um impacto de desempenho de cerca de 10x a 20x em cenários típicos de gravação. Às vezes, não há uma desaceleração perceptível na interface do usuário. Mas para as operações que consomem mais recursos, como a caixa de diálogo Abrir Arquivo, você verá o impacto da gravação.
Erros de arquivo de rastreamento
Erros de arquivo de rastreamento podem ocorrer. Para obter mais informações, consulte Depuração de viagem no tempo – Solução de problemas.
Recursos avançados de Time Travel Debugging
Linhas do tempo
As linhas do tempo são uma representação visual dos eventos que ocorrem durante a execução. Esses eventos podem ser locais de: pontos de interrupção, leitura/gravação de memória, chamadas e retornos de função e exceções. Para obter mais informações sobre linhas do tempo, consulte WinDbg – Linhas do tempo.
Suporte ao modelo de dados do depurador
-
Suporte interno ao modelo de dados – o TTD inclui suporte ao modelo de dados. Usar consultas LINQ para analisar falhas de aplicativos pode ser uma ferramenta poderosa. Você pode usar a janela modelo de dados no WinDbg para trabalhar com uma versão expansível e navegável de
dxedx -g, permitindo que você crie tabelas usando NatVis, JavaScript e consultas LINQ.
Para obter informações gerais sobre o modelo de dados do depurador, consulte WinDbg – Modelo de dados. Para obter informações sobre como trabalhar com o modelo de objeto do depurador TTD, consulte Depuração de Viagem no Tempo – Introdução aos objetos de Depuração de Viagem no Tempo.
Suporte a scripts
- Automação de scripts - O suporte a scripts para JavaScript e NatVis permite a automação da investigação de problemas. Para obter mais informações, consulte Depuração de viagem no tempo – Automação JavaScript.
Para obter informações gerais sobre como trabalhar com JavaScript e NatVis, consulte WinDbg – Scripting.
TTD.exe Utilitário de linha de comando
O utilitário de linha de comando TTD.exe para registrar rastreamentos está disponível. Para obter mais informações, consulte Depuração de viagem no tempo - TTD.exe utilitário de linha de comando.
Suporte a TTD de código gerenciado
Você pode usar a extensão de depuração sos (sos.dll) em execução no modo de 64 bits para depurar o código gerenciado usando TTD no WinDbg. Para obter mais informações, consulte Depurando código gerenciado usando o depurador do Windows.
Introdução ao TTD
Comece aqui
Se você for novo no TTD, siga este roteiro de aprendizagem:
- Registrar um rastreamento – Capturar seu primeiro rastreamento de execução
– Navegar & analisar sua gravaçãoReproduzir uma trilha - Exemplo de passo a passo do aplicativo – exemplo de depuração passo a passo
Precisa de ajuda?
- Trabalhando com arquivos de rastreamento – Gerenciar e otimizar arquivos de rastreamento
- Solução de problemas – Resolver problemas comuns
Recursos avançados
- Objetos do depurador TTD – Consultar rastreamentos com LINQ
- Automação JavaScript – Automatizar investigação de problemas