Compartilhar via


Notas de versão de depuração de viagem no tempo

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

Este tópico fornece informações sobre o que há de novo na Depuração de Viagem no Tempo.

1.11.429

Esta atualização do TTD contém correções de bugs, além de algumas alterações internas para melhorar a confiabilidade.

Nota: o 1.11.410 trouxe uma regressão na emulação da instrução Intel/AMD LODSD. Uma correção disso virá na próxima versão.

Correções:

  • Aprimore a robustez da leitura de pacotes e outras alterações diversas para melhorar a confiabilidade.
  • Corrija uma regressão na emulação para a instrução AVX VBROADCAST[I/F]128.
  • Corrija o acesso ao registro de exceção no ARM64 nos builds mais recentes do Windows.

1.11.410

Acessibilidade aprimorada: a interface de usuário de progresso agora é dimensionada corretamente com as alterações no tamanho do texto.

O comando @$cursession.TTD.Calls() no depurador agora é compatível com curingas que correspondem a um grande número de funções. Agora é possível consultar um grande número de funções (@$cursession.TTD.Calls("kernel32!*")).

Automação: uma nova opção de linha de comando -onMonitorReadyEvent indica quando o monitor de gravação (chave -monitor) está pronto para registrar novos processos.

Correções:

  • Correção de algumas condições de corrida durante a inicialização do gravador.
  • Correção da forma como gravamos syscalls para que os pontos de interrupção funcionem corretamente.
  • Correção de vários problemas relacionados à gravação seletiva de módulos.

Correções para ARM64:

  • Foi corrigido um bug que impedia a gravação de TTD em CPUs de nível ARM64v8.0 simples.
  • Aprimorou a mensagem ao tentar usar no ARM64 um rastreamento de um processo x86 ou x64.

Correções AMD/Intel (inclui alguns problemas relatados pelo Google):

  • Foi corrigida a emulação incorreta de LODS: em vez de zerar os bits não utilizados do RAX, eles agora são preservados corretamente.
  • Foi corrigida a emulação da instrução “pop ax” nos processos x86/x64, que zerava incorretamente os bits superiores do registro completo (por exemplo, “pop ax” limpava os bits superiores de rax).
  • Emulação direta da instrução XGETBV (mais rápida).
  • Emulação direta de todos os movimentos SIMD AVX512 (mais rápidos).

1.11.316

Foi corrigida uma regressão que estava causando falhas ocasionais durante a gravação de programas com sequências longas e ininterruptas de instruções com muitos dados.

Correções para ARM64:

  • Agora é possível gravar em processos ARM64 que tenham o recurso PAC ativado.
  • Foram corrigidas as instruções ANDS e TST, que não estavam conseguindo limpar os sinalizadores de carry e estouro.

Correções para AMD/Intel:

  • Foi corrigido o bug em que o TTD emulava incorretamente o “xchg r8,rax” e o “xchg r8w,ax” como NOP.

1.11.304

A TTD agora implementa e disponibiliza publicamente uma API para controlar o gravador de dentro do processo gravado ao vivo. A documentação e um exemplo podem ser encontrados no GitHub.

O TTD agora pode ser injetado com a gravação desligada usando o novo comutador -recordMode. Por padrão, o TTD usa -recordMode Automatic, o que faz com que todos os threads sejam gravados. Se -recordMode Manual for especificado, o TTD injetará no processo de destino, mas não registrará nada até que seja instruído a fazê-lo por meio de uma chamada de API.

A gravação agora pode ser restrita a um conjunto específico de módulos usando o comutador -module. Em alguns cenários, isso pode resultar em gravação substancialmente mais rápida e arquivos de rastreamento menores. Mais de um switch -module pode ser especificado.

Os componentes de registro e repetição correspondentes agora estão incluídos na distribuição. No caso de uma incompatibilidade entre o depurador e o gravador de linha de comando, ou um bug de repetição, os componentes de repetição poderão ser copiados para a instalação do depurador como uma solução alternativa até que um novo depurador seja lançado.

O local do arquivo instalado pode ser encontrado no Powershell da seguinte maneira:

ls (Get-AppxPackage | where Name -eq 'Microsoft.TimeTravelDebugging').InstallLocation

Adicionado

  • Adicionar switch -recordmode para ativar a injeção sem gravação automática (1.11.296)
  • Adicionar switch -module e usar para criar a configuração SR (1.11.291)
  • Projetar dados personalizados registrados pela API em processo no modelo de dados (1.11.286)
  • Adicionar um novo TTDLiveRecorder.dll e conectá-lo junto com TTDRecordCPU.dll (1.11.283)
  • Adicionar componentes de repetição ao MSIX & corrigir a pesquisa de SDK (1.11.265)

Alterado

nenhum

Fixo

  • Solucionar um bug no serializador nlohmann JSON, que é usado em algumas ferramentas internas (1.11.281)
  • Ajustar o alinhamento da cadeia de caracteres para evitar um bug CRT raro (1.11.279)
    • Reportado e corrigido nas bases de código VS e OS.
  • Várias pequenas correções de relatórios de falhas do Watson (1.11.276)
  • Corrigir uma regressão que pode causar corrupção do arquivo de rastreamento em alguns casos (1.11.264)

Problemas conhecidos

  • No ARM64, o compilador está falhando ao chamar uma série de funções de alta frequência que, em casos extremos, podem fazer com que o gravador fique sem espaço na pilha e trave.

1.11.261

Alterações importantes nesta versão incluem:

  • [ARM64] Correção do comportamento das instruções SXTL, SQXTN2, SQXTUN2, UQXTN2, XTN2 e TRN1 quando o registro de destino é usado como origem.
  • [ARM64] Correção um problema que fazia com que o depurador mostrasse registradores SIMD com seus 64 bits inferiores duplicados nos 64 bits altos.
  • [AMD64] Correções de emulação AVX512 para os processadores Zen4 da AMD (os registradores estavam ficando corrompidos).

Alterado

  • Implemente um novo sistema de controle de versão especificamente para o emulador. (1.11.260)

Fixo

  • Corrija instruções ARM64 defeituosas onde o registro de destino também é usado como origem. (1.11.261)
  • Corrija a solução alternativa do Zen4 para retornos diretos ao emulador. (1.11.222)

1.11.202

Essa versão corrige uma série de problemas encontrados durante a gravação de serviços ou o monitoramento do lançamento do processo por meio do switch -monitor. Ela também remove o suporte para gravação ARM32 do produto.

Alterado

  • Reduza o tamanho binário vinculando componentes TTD ao UCRT como uma DLL. (1.11.191)

Fixo

  • Corrija a gravação de serviços. (1.11.193)
  • Corrigir vários problemas ao usar -monitor. (1.11.189)
  • Corrigir o quadro de pilha da função que preserva não voláteis ao executar fallbacks em x64 (1.11.188)
  • Buffer de saída reativado para TTD (1.11.187)
  • Corrigir o tratamento do identificador do GPO no ProcessMonitorServer (1.11.179)

Removido

  • Remover o código de gravação ARM32 do repositório (1.11.198)

1.11.173

Esta versão aumenta a visibilidade de algumas mensagens de erro, extraindo-as do arquivo .out e imprimindo-as no console. Ela também corrige uma falha rara durante a repetição do rastreamento.

Alterado

  • Extrair e imprimir mensagens de erro do arquivo .out (1.11.173)

Fixo

  • Corrigir o conflito de arquivos ao ler o arquivo .out do processo separado. (1.11.171)
  • Corrigir falhas raras durante a repetição do rastreamento. (1.11.166)

1.11.163

Esta versão inclui suporte para gravação de processos x86 em máquinas x64.

Alterado

  • Corrigir a gravação x86 com instalação TTD x64 (1.11.163)

Fixo

  • Limpeza de EULA (1.11.161)

1.11.159

Essa versão é a primeira versão pública do gravador de linha de comando. Juntamente com várias mudanças necessárias para habilitar o lançamento público do gravador de linha de comando, a versão também inclui uma série de correções de bugs, incluindo algumas correções para o emulador de CPU.

O novo switch -timestampFileName permite a geração de arquivos .run com carimbo de data/hora. Isso é útil quando você está gravando várias instâncias do mesmo processo e deseja minimizar o tempo de inicialização da gravação.

Alterado

  • Escolher o modo de injeção padrão em tempo de execução com base no qual o rastreador é usado (1.11.156)
  • Adicionar o switch para habilitar a geração de arquivos .run baseados em carimbo de data/hora (1.11.155)
  • Adicionar EULA e -accepteula ao TTD (1.11.154)
  • Adicionar ProcLaunchMon.sys ao MSIX (1.11.153)
  • Criar MSIX e MSIXBUNDLE por arco (1.11.152)
  • Corrigir uma série de problemas que surgiram ao testar o TTD criado com o Clang. (1.11.146)
  • Correções do Clang para TTDAnalyze (1.11.144)

Fixo

  • Ler feedback sobre o appinstaller/versão pública (1.11.159)
  • Comentários do RC (1.11.157)
  • Evite colocar o registro Zero na lixeira inicializando RegisterInfo para apontar para Sink. (1.11.149)
  • Corrija a instrução TST de imediato e aprimore o teste de unidade para cobri-lo e muito mais. (1.11.148)
  • Consolidar a decisão do processo protegido e desativar o uso do processo protegido (1.11.147)

1.11.138

Alterado

  • Criar MSIX de gravador (1.11.138)
  • Corrija todos os problemas para que Clang possa criar TTD. (1.11.137)
  • Introduza o -monitor X como forma de gravar um processo quando ele for iniciado (1.11.116)

Fixo

  • Corrigir emulação "CMP ZR" ARM64 (1.11.128)
  • Corrigir emulação AVX512 nos processadores Zen4 da AMD (1.11.127)
  • Corrigir o mecanismo que o TTD usa para localizar arquivos para uma CPU específica (1.11.121)
  • Corrigir regressão TTD x86 (TTDRecordCPU.dll falha ao carregar) (1.11.110)
  • Corrigir o retorno ao caminho nativo no ARM64 para não colocar X28 na lixeira (1.11.109)

Confira também

Depuração de Viagem no Tempo – Visão geral

Depuração de Viagem no Tempo – Gravador de linha de comando