Notas de versão de depuração de viagem no tempo
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)
- Contribuiu com uma correção para essa biblioteca que ficará disponível em uma versão futura.
- 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
eTRN1
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)