Compartilhar via


Depuração de viagem no tempo - Trabalhando com arquivos de rastreamento

Logotipo de depuração da viagem no tempo com um relógio.

Esta seção explica como trabalhar com arquivos criados e consumidos pela depuração de viagem no tempo.

Visão geral do arquivo de rastreamento

A Depuração de viagem no tempo usa os seguintes arquivos para depurar a execução de código.

  • O arquivo de rastreamento contém a gravação de execução de código e tem uma extensão .RUN.

  • O arquivo de índice permite acesso rápido às informações no arquivo de rastreamento e tem uma extensão .IDX.

  • Erros e outras saídas de gravação são gravadas no arquivo de log do depurador.

Arquivos de rastreamento .RUN

Arquivos de rastreamento .RUN podem ser abertos após serem gravados usando Arquivo>Iniciar depuração>Abrir arquivo de rastreamento.

Captura de tela das opções de abertura de arquivo com a opção

Todos os arquivos de rastreamento de saída são armazenados na pasta de documentos dos usuários por padrão. Por exemplo, para Usuário1 os arquivos TTD seriam armazenados aqui:

C:\Users\User1\Documents

Você pode trocar o local dos arquivos de rastreamento quando começar a gravar. Para obter mais informações, leia Depuração de viagem no tempo - Gravação.

A lista de arquivos usada mais recentemente lhe permite acessar rapidamente os arquivos de configuração de destino usados anteriormente. Os arquivos de rastreamento ou arquivos de despejo usados recentemente também são listados.

Captura de tela da lista de abertura de arquivos mostrando cinco arquivos de rastreamento .run usados recentemente.

Indexar arquivos .IDX

Um arquivo de índice .IDX é criado para o arquivo de rastreamento .RUN associado automaticamente ao abrir o arquivo de rastreamento no WinDbg. Você pode criar o arquivo de índice manualmente com o comando !index. Um índice permite o acesso mais rápido às informações de rastreamento.

Os arquivos IDX também podem ser grandes, tendo normalmente o dobro do tamanho do arquivo .RUN.

Recriando o arquivo .IDX

Você pode recriar o arquivo .IDX do arquivo .RUN com o comando !index. Para mais informações, consulte Depuração de viagem no tempo - !index (viagem no tempo).

0:0:001> !index
Indexed 3/3 keyframes
Successfully created the index in 49ms.

Compartilhando arquivos de rastreamento .RUN do TTD

O TTD é local e não funciona remotamente conectado a outra máquina.

Os arquivos de rastreamento TTD podem ser compartilhados com outras pessoas copiando o arquivo .RUN. Isso pode ser útil para pedir a um colega de trabalho ajuda para descobrir o problema. Ele não precisa instalar o aplicativo de falha ou fazer outra configuração relacionada para reproduzir o problema. Basta carregar o arquivo de rastreamento e depurar o aplicativo como se estivesse instalado em seu PC.

A máquina onde você reproduz o rastreamento TTD deve ser compatível todas as instruções usadas na máquina de gravação; por exemplo, instruções AVX.

Você pode renomear o arquivo e incluir qualquer informação adicional, como a data ou um número de bug.

O arquivo .IDX não precisa ser copiado, pois ele pode ser recriado com o comando !index conforme descrito acima.

Dica

Ao colaborar com outras pessoas, transmita as posições de rastreamento relevantes relacionadas ao problema em questão. O colaborador pode usar o comando !tt x:y para mover a esse ponto exato no tempo na execução do código. Os intervalos de posição de tempo podem ser incluídos nas descrições de bugs para rastrear o local em que o possível problema pode estar ocorrendo.

Erro - Arquivo de Log

Erros e outras saídas de gravação são gravadas no arquivo de log do depurador. Para visualizar o arquivo de log, selecione Exibir>Logs.

Este exemplo mostra o texto do log de erros ao tentar iniciar e gravar um executável chamado Foo.exe que não está no diretório C:\Windows.

2017-09-21:17:18:10:320 : Information : DbgXUI.dll : TTD: Output: 
Microsoft (R) TTD 1.01.02
Release: 10.0.16366.1000
Copyright (C) Microsoft Corporation. All rights reserved.
Launching C:\Windows\Foo.exe
2017-09-21:17:18:10:320 : Error : DbgXUI.dll : TTD: Errors: 
Error: Trace of C:\Windows\Foo.exe PID:0 did not complete successfully: status:27
Error: Could not open 'Foo.exe'; file not found.
Error: Corrupted trace dumped to C:\Users\User1\Documents\Foo01.run.err.

Tamanho do arquivo de rastreamento

Os arquivos de rastreamento TTD podem ficar muito grandes e é importante deixar espaço livre em disco disponível. Se você gravar um aplicativo ou processo, mesmo que só por alguns minutos, o arquivo de rastreamento pode aumentar em vários gigabytes. O tamanho do arquivo de rastreamento depende de diversos fatores descritos abaixo.

O TTD não define o tamanho máximo de arquivos de rastreamento para permitir cenários complexos de execução prolongada. Recriar rapidamente o problema manterá o tamanho do arquivo de rastreamento o menor possível.

Fatores de tamanho de arquivo de rastreamento

Não é possível estimar exatamente o tamanho do arquivo de rastreamento, mas há algumas regras práticas que ajudam a entender os tamanhos de arquivo TTD.

Estes fatores podem afetar o tamanho do arquivo de rastreamento:

  • O número de instruções de código executadas em todos os threads ao gravar o processo ou aplicativo em execução
  • O período durante o qual o aplicativo ou processo foi gravado (somente porque isso afeta o número de instruções de código gravadas)
  • O tamanho dos dados de memória utilizados pelo aplicativo ou processo

O número de instruções executadas e gravadas é o fator que mais afeta o tamanho do arquivo de rastreamento. Normalmente, um rastreamento requer entre 1 bit e 1 byte por instrução executada. É provável que um rastreamento fique próximo ao limite inferior dessa faixa quando o programa gravado executar um número menor de funções distintas e operar em um conjunto menor de dados. É provável que um rastreamento fique próximo do limite superior dessa faixa quando o programa gravado executa um número maior de funções distintas ou opera em um conjunto maior de dados.

Regra prática de tamanho de arquivo de rastreamento

O arquivo de rastreamento aumenta cerca de 5 MB a 50 MB por segundo ao gravar um aplicativo ou processo ativo, dependendo dos fatores de tamanho do arquivo de rastreamento identificados acima.

O arquivo de rastreamento não aumenta quando o aplicativo ou processo que está sendo gravado estiver ocioso (por exemplo, ao aguardar a entrada).

No momento, não há limite máximo de tamanho para arquivos de rastreamento. O WinDbg pode reproduzir arquivos de rastreamento que chegam às centenas de gigabytes de tamanho.

Tamanho do arquivo de índice

O arquivo de índice é criado automaticamente pelo WinDbg ao abrir um rastreamento pela primeira vez. Ele contém informações que ajudam o depurador a reproduzir o rastreamento e consultar informações sobre a memória de maneira mais eficiente. Normalmente, o tamanho varia de 1 a 2 vezes o tamanho do arquivo de rastreamento. Os fatores que afetam o tamanho são parecidos com os que afetam o tamanho do arquivo de rastreamento.

Primeiro, o tamanho do arquivo de índice é dimensionado em relação à duração do rastreamento. Um rastreamento que contém mais instruções gravadas geralmente terá um índice maior.

Em segundo lugar, o tamanho do índice é dimensionado em relação à amplitude de acessos à memória. Se o programa que era gravado frequentemente acessou muitos locais de memória distintos, geralmente, o índice será maior do que se o programa gravado acessasse menos locais de memória distintos ou se os acessos a locais de memória fossem menos frequentes.

Como esses fatores são parecidos com os fatores que afetam o tamanho do arquivo de rastreamento, o tamanho do arquivo de índice geralmente é dimensionado em relação ao tamanho do arquivo de índice (assim, a estimativa é de que ele normalmente tenha entre 1x e 2x o tamanho do arquivo de rastreamento).

E se eu ficar sem espaço no disco?

Os arquivos de índice e rastreamento de TTD são gravados no disco. No momento, não há um limite de tamanho para o arquivo de rastreamento ou de índice. O arquivo de rastreamento aumenta de tamanho até você parar de gravar ou exceder a quantidade de espaço em disco disponível.

Durante a gravação: o TTD irá gravar a última página no arquivo de rastreamento e, depois, irá aguardar efetivamente até que ele possa gravar novamente. O WinDbg continua mostrando a caixa de diálogo de Gravação, mas não mostra uma mensagem de erro/aviso ao ficar sem espaço em disco durante a gravação.

Ficar sem espaço em disco durante a gravação resulta em um arquivo de rastreamento com uma gravação incompleta da execução do código. O arquivo de rastreamento incompleto pode ser aberto no WinDbg, mas pode não incluir o problema em si se o erro ocorrer depois de ficar sem espaço em disco ao gravar o arquivo de rastreamento.

Solução alternativa: abra o Explorador de Arquivos e verifique se o espaço livre do disco (ou seja, unidade C:) está perto de zero. Alternativamente, observe o arquivo de rastreamento (.RUN) no Explorador de Arquivos (padrão na pasta Documentos) e, se não estiver aumentando regularmente de tamanho, a gravação pode estar aguardando. Selecione o botão Parar e Depurar no WinDbg, libere espaço ou salve em outro disco e reinicie a gravação.

Durante a indexação: o depurador pode produzir um arquivo de índice inválido, resultando em um comportamento imprevisível no depurador, ou o host do mecanismo do depurador pode falhar.

Solução alternativa: feche o depurador e exclua arquivos de índice (.idx) que possam existir para o rastreamento. Libere espaço em disco suficiente ou mova o arquivo de rastreamento para outro disco com espaço livre suficiente. Abra o rastreamento novamente no depurador e execute !index para criar outro índice correto. A indexação não modifica o arquivo de rastreamento original (.run), de forma que nenhum dado terá sido perdido.

Confira também

Depuração de viagem no tempo – Visão geral