Condividi tramite


Note sulla versione del debug del tempo di viaggio

Logo di debug del tempo di viaggio con un orologio.

In questo argomento vengono fornite informazioni sulle novità del debug di viaggi temporali.

1.11.429

Questo aggiornamento di TTD contiene alcune correzioni di bug insieme ad alcune modifiche interne per migliorare l'affidabilità.

Nota: 1.11.410 ha introdotto una regressione nell'emulazione dell'istruzione LODSD Intel/AMD. Una correzione per questa operazione sarà disponibile nella versione successiva.

Correzioni:

  • Migliorare l'affidabilità della lettura dei pacchetti e altre modifiche non corrette per migliorare l'affidabilità.
  • Correzione di una regressione nell'emulazione dell'istruzione AVX VBROADCAST[I/F]128.
  • Correggere l'accesso al record di eccezione in ARM64 nelle build più recenti di Windows.

1.11.410

Accessibilità migliorata: l'interfaccia utente di stato ora viene ridimensionata correttamente con le modifiche alle dimensioni del testo.

Il @$cursession.TTD.Calls() comando nel debugger supporta ora caratteri jolly che corrispondono a un numero elevato di funzioni. È ora possibile eseguire query per un numero elevato di funzioni (@$cursession.TTD.Calls("kernel32!*")).

Automazione: una nuova -onMonitorReadyEvent opzione della riga di comando indica quando il monitoraggio di registrazione (-monitor opzione) è pronto per registrare nuovi processi.

Correzioni:

  • Correzione di alcune race condition durante l'inizializzazione del registratore.
  • Correzione del modo in cui si registrano le chiamate di sistema in modo che i punti di interruzione funzionino correttamente.
  • Risolvere più problemi relativi alla registrazione selettiva del modulo.

Correzioni ARM64:

  • Correzione di un bug che impedisce la registrazione TTD nelle CPU di livello ARM64v8.0 normale.
  • Miglioramento della messaggistica quando si tenta di usare in ARM64 una traccia di un processo x86 o x64.

Correzioni AMD/Intel (include alcuni problemi segnalati da Google):

  • Correzione dell'emulazione errata di LODS: invece di azzerire i bit inutilizzati di RAX vengono ora mantenuti correttamente.
  • Correzione dell'emulazione dell'istruzione "pop ax" nei processi x86/x64, che ha erroneamente azzerato i bit superiori del registro completo (ad esempio, "pop ax" ha cancellato i bit superiori di rax).
  • Emulazione diretta dell'istruzione XGETBV (più veloce).
  • Emulazione diretta di tutti gli spostamenti SIMD AVX512 (più veloce).

1.11.316

Correzione di una regressione che causava arresti anomali occasionali durante la registrazione di programmi con sequenze di istruzioni lunghe e senza interruzioni dei dati.

Correzioni ARM64:

  • La registrazione nei processi ARM64 con la funzionalità PAC abilitata è ora supportata.
  • Correzione delle istruzioni ANDS e TST, che non erano in grado di cancellare i flag di trasporto e overflow.

Correzioni AMD/Intel:

  • Correzione del bug per cui TTD emulato erroneamente "xchg r8,rax" e "xchg r8w,ax" come NOP.

1.11.304

TTD implementa e pubblica pubblicamente un'API per controllare il registratore dall'interno del processo registrato live. La documentazione e un esempio sono disponibili in GitHub.

TTD può ora inserire se stesso con la registrazione disattivata usando il nuovo -recordMode commutatore. Per impostazione predefinita, TTD usa -recordMode Automatic che determina la registrazione di tutti i thread. Se -recordMode Manual viene specificato, TTD inserisce nel processo di destinazione, ma non registra nulla fino a quando non viene indicato di farlo tramite una chiamata API.

La registrazione può ora essere limitata a un set specifico di moduli usando l'opzione -module . In alcuni scenari questo può comportare una registrazione notevolmente più veloce e file di traccia più piccoli. È possibile specificare più di un'opzione -module .

I componenti di record e riproduzione corrispondenti sono ora inclusi nella distribuzione. In caso di incompatibilità tra il debugger e il registratore della riga di comando o un bug di riproduzione, i componenti di riproduzione possono essere copiati nell'installazione del debugger come soluzione alternativa finché non viene rilasciato un nuovo debugger.

Il percorso del file installato è disponibile in PowerShell eseguendo le operazioni seguenti:

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

Aggiunto

  • Aggiungere l'opzione -recordmode per abilitare l'inserimento senza registrazione automatica (1.11.296)
  • Aggiungere l'opzione -module e usare per creare la configurazione SR (1.11.291)
  • Proiettare dati personalizzati registrati dall'API in-process al modello di dati (1.11.286)
  • Aggiungere un nuovo TTDLiveRecorder.dll e collegarlo con TTDRecordCPU.dll (1.11.283)
  • Aggiungere componenti di riproduzione alla ricerca di MSIX & fix SDK (1.11.265)

Modificato

Nessuno

Fisso

  • Risolvere un bug nel serializzatore JSON nlohmann, usato in alcuni strumenti interni (1.11.281)
  • Regolare l'allineamento delle stringhe per evitare un raro bug CRT (1.11.279)
    • Segnalato a e corretto nelle codebase di Visual Studio e del sistema operativo.
  • Diverse piccole correzioni dei report di arresto anomalo di Watson (1.11.276)
  • Correggere una regressione che potrebbe causare il danneggiamento del file di traccia in alcuni casi (1.11.264)

Problemi noti

  • In ARM64 il compilatore non riesce a chiamare una serie di funzioni ad alta frequenza che in casi estremi possono causare l'interruzione dello spazio dello stack e l'arresto anomalo del registratore.

1.11.261

Le modifiche rilevanti in questa versione includono:

  • [ARM64] Correzione del comportamento delle SXTListruzioni , SQXTUN2SQXTN2, , UQXTN2XTN2 e TRN1 quando il registro di destinazione viene usato come origine.
  • [ARM64] È stato risolto un problema che causava la visualizzazione dei registri SIMD con i 64 bit inferiori duplicati nei 64 bit alti.
  • [AMD64] Correzioni di emulazione AVX512 per i processori Zen4 di AMD (i registri venivano danneggiati).

Modificato

  • Implementare un nuovo sistema di controllo delle versioni specifico per l'emulatore. (1.11.260)

Fisso

  • Correggere le istruzioni ARM64 difettose in cui viene usato anche il registro di destinazione come origine. (1.11.261)
  • Correggere la soluzione alternativa Zen4 per il ritorno diretto all'emulatore. (1.11.222)

1.11.202

Questa versione risolve diversi problemi riscontrati durante la registrazione dei servizi o l'avvio del processo di monitoraggio tramite l'opzione -monitor . Rimuove anche il supporto della registrazione ARM32 dal prodotto.

Modificato

  • Ridurre le dimensioni binarie collegando i componenti TTD a UCRT come DLL. (1.11.191)

Fisso

  • Correzione della registrazione dei servizi. (1.11.193)
  • Risolvere diversi problemi quando si usa -monitor. (1.11.189)
  • Correggere lo stack frame della funzione che mantiene i non volatili durante l'esecuzione di fallback in x64 (1.11.188)
  • Reabilitare il buffer di output per TTD (1.11.187)
  • Correggere la gestione dell'handle dell'oggetto Criteri di gruppo in ProcessMonitorServer (1.11.179)

Rimosse

  • Rimuovere il codice di registrazione ARM32 dal repository (1.11.198)

1.11.173

Questa versione aumenta la visibilità di determinati messaggi di errore estrandoli dal file con estensione out e stampandoli nella console. Risolve anche un arresto anomalo raro durante la riproduzione della traccia.

Modificato

  • Estrarre e stampare messaggi di errore dal file out (1.11.173)

Fisso

  • Correzione del conflitto di file durante la lettura del file out da un processo separato. (1.11.171)
  • Correzione di un arresto anomalo raro durante la riproduzione della traccia. (1.11.166)

1.11.163

Questa versione aggiunge il supporto per la registrazione dei processi x86 nei computer x64.

Modificato

  • Correzione della registrazione x86 con installazione TTD x64 (1.11.163)

Fisso

  • Pulizia del contratto di licenza (1.11.161)

1.11.159

Questa versione è la prima versione pubblica del registratore della riga di comando. Oltre a diverse modifiche necessarie per abilitare il rilascio pubblico del registratore della riga di comando, questa versione include anche una serie di correzioni di bug, tra cui un paio di correzioni all'emulatore della CPU.

La nuova -timestampFileName opzione abilita la generazione di file con estensione run basata su timestamp. Ciò è utile quando si registrano molte istanze dello stesso processo e si vuole ridurre al minimo il tempo di avvio della registrazione.

Modificato

  • Scegliere la modalità di inserimento predefinita in fase di esecuzione in base alla traccia usata (1.11.156)
  • Aggiungere l'opzione per abilitare la generazione di file con estensione run basata su timestamp (1.11.155)
  • Aggiungere contratto di licenza e -accepteula a TTD (1.11.154)
  • Aggiungere ProcLaunchMon.sys a MSIX (1.11.153)
  • Creare MSIX e MSIXBUNDLE per arch (1.11.152)
  • Consente di risolvere alcuni problemi riscontrati durante il test TTD compilato con Clang. (1.11.146)
  • Correzioni Clang per TTDAnalyze (1.11.144)

Fisso

  • Esaminare il feedback su appinstaller/versione pubblica (1.11.159)
  • Feedback RC (1.11.157)
  • Evitare di cestinare il registro Zero inizializzando RegisterInfo in modo che punti a Sink. (1.11.149)
  • Correggere l'istruzione TST con immediate e migliorare lo unit test per coprirlo e altro ancora. (1.11.148)
  • Consolidare la decisione del processo protetto e disabilitare l'uso del processo protetto (1.11.147)

1.11.138

Modificato

  • Creare un registratore MSIX (1.11.138)
  • Risolvere tutti i problemi in modo che Clang possa compilare TTD. (1.11.137)
  • Introdurre -monitor X come modo per registrare un processo all'avvio (1.11.116)

Fisso

  • Correzione dell'emulazione ARM64 "CMP ZR" (1.11.128)
  • Correzione dell'emulazione AVX512 nei processori Zen4 di AMD (1.11.127)
  • Correzione del meccanismo usato da TTD per trovare i file per una CPU specifica (1.11.121)
  • Correzione della regressione TTD x86 (errore di caricamento TTDRecordCPU.dll) (1.11.110)
  • Correzione del ritorno al percorso nativo in ARM64 per non cestino X28 (1.11.109)

Vedi anche

Debug di viaggi temporali - Panoramica

Debug di viaggi temporali - Registratore della riga di comando