Condividi tramite


Debug di viaggi temporali - Risoluzione dei problemi

Logo di debug del tempo di viaggio con un orologio.

Questa sezione descrive come risolvere i problemi relativi alle tracce di spostamento temporali.

Problemi durante il tentativo di registrare un processo

Viene visualizzato un messaggio di errore che indica che "WinDbg deve essere eseguito con privilegi elevati per supportare il debug del tempo di viaggio"

Come indica il messaggio, l'esecuzione del debugger con privilegi elevati è un requisito. Per eseguire il debugger con privilegi elevati, fare clic con il pulsante destro del mouse sull'icona WinDbg nel menu Start e quindi scegliere Altro>esegui come amministratore.

Ho installato WinDbg con un account che non dispone dei privilegi di amministratore e viene visualizzato un messaggio di errore che indica che "WinDbg deve essere eseguito con privilegi elevati per supportare il debug di viaggi temporali"

Reinstallare WinDbg usando un account con privilegi di amministratore e usarlo durante la registrazione nel debugger.

Non è possibile avviare e registrare un'applicazione UWP

Questo non è supportato in questo momento, ma puoi collegarti a e registrare un'applicazione UWP già in esecuzione.

Non è possibile registrare un tipo di processo insolito- in esecuzione in un'altra sessione, contesto di sicurezza, credenziali...

In questo momento, TTD registra solo processi regolari che è possibile avviare normalmente da una console di comandi o facendo clic su un eseguibile o un collegamento in Esplora risorse.

Impossibile registrare correttamente l'applicazione nel computer

Se la registrazione dell'applicazione non riesce, verificare che sia possibile registrare un semplice processo di Windows. Ad esempio, "ping.exe" o "cmd.exe" sono processi semplici che normalmente possono essere registrati.

Non riesco a registrare nulla sul mio computer

La registrazione TTD è una tecnologia invasiva, che può interferire con altre tecnologie invasive, ad esempio framework di virtualizzazione delle applicazioni, prodotti di gestione delle informazioni, software di sicurezza o prodotti antivirus.

Per informazioni sulle incompatibilità TTD note, vedere "Things to look out for" (Elementi da cercare) in Time Travel Debugging - Overview (Panoramica del debug di viaggi temporali - Panoramica delle incompatibilità TTD note).

Sto tracciando un'applicazione ed eseguendo AppVerifier contemporaneamente e le prestazioni durante la riproduzione della traccia sono lente.

A causa del modo in cui AppVerifier usa la memoria per controllare l'applicazione, l'esperienza in un secondo momento durante la riproduzione della traccia può essere notevolmente peggiore rispetto a senza AppVerifier. Per migliorare le prestazioni, disabilitare AppVerifier durante la registrazione dell'app. Se non è possibile, potrebbe essere necessario chiudere la finestra dello stack di chiamate in WinDbg per migliorare le prestazioni.

Problemi con . File di indice IDX

Il debug di un file di traccia senza un file di indice o con un file di indice danneggiato o incompleto è possibile, ma non è consigliabile. Il file di indice è necessario per garantire che i valori di memoria letti dal processo sottoposto a debug siano più accurati e per aumentare l'efficienza di tutte le altre operazioni di debug.

Usare il !index -status comando per esaminare lo stato dell'oggetto . File di indice IDX associato all'oggetto . Eseguire il file di traccia.

Se è possibile provare a ricreare il file di indice eseguendo !index -force.

Ricreazione dell'oggetto . File di indice IDX

Se si sospetta e si esegue un problema con il file di indice o !index -status viene visualizzato un messaggio diverso da "File di indice caricato", ricrearlo. A tale scopo, è possibile eseguire !index -force. Se l'operazione ha esito negativo:

  1. Chiudere il debugger.
  2. Eliminare il file IDX esistente, con lo stesso nome di . Eseguire il file di traccia e trovarsi nella stessa directory di . Il file RUN è .
  3. Aprire la traccia . Eseguire il file in WinDbg. Verrà eseguito il !index comando per ricreare l'indice.
  4. Usare il !index -status comando per verificare che l'indice di traccia sia funzionale.

Assicurarsi che sia disponibile spazio sufficiente per il file di indice nella stessa posizione in cui si trova il file di traccia. A seconda del contenuto della registrazione, il file di indice può essere significativamente più grande del file di traccia, in genere nell'ordine di due volte maggiore.

Problemi relativi a Trace . File RUN

In caso di problemi con la traccia . File RUN, è possibile che vengano visualizzati messaggi di errore come questi.

Replay and log are out of sync at fallback data. Packet type is incorrect "Packet Type"
Replay and log are out of sync at opaque data. Log had already reached the end
Replay exit thread event does not match up with logged event
Logged debug write values are out of sync with replay

Nella maggior parte dei casi tutti i messaggi di errore indicano che . Il file di traccia RUN non è utilizzabile e deve essere registrato nuovamente.

Registrare nuovamente l'app in modalità utente

Se si verifica un problema specifico con la registrazione di un'app in modalità utente, è possibile provare a registrare un'app diversa nello stesso PC o provare la stessa app in un PC diverso. Puoi provare a registrare un uso diverso dell'app per verificare se si verifica un problema specifico con la registrazione di determinate parti dell'app.

Quando si esegue il debug o si crea l'indice, vengono visualizzati messaggi relativi agli eventi di derailment.

È possibile che vengano visualizzati messaggi come questo:

Derailment event MissingDataDerailment(7) on UTID 2, position 2A550B:108 with PC 0x7FFE5EEB4448 Request address: 0x600020, size: 32

TTD funziona eseguendo un emulatore all'interno del debugger, che esegue le istruzioni del processo sottoposto a debug per replicare lo stato del processo in ogni posizione della registrazione. Le deviazioni si verificano quando questo emulatore osserva una certa discrepanza tra lo stato risultante e le informazioni trovate nel file di traccia. L'errore riportato sopra, ad esempio, fa riferimento a un'istruzione trovata nella posizione 0x7FFE5EEB4448, nella posizione 2A550B:108 nella traccia, che ha tentato di leggere una certa memoria intorno alla posizione 0x600020, che non esiste nella registrazione.

I railment sono spesso causati da un errore nel registratore, o a volte nell'emulatore, in alcune istruzioni registrate più indietro nella traccia.

Nella maggior parte dei casi questo messaggio di errore indica che . Il file di traccia RUN avrà un gap nel thread che si è risolto, a partire dal punto in cui è stato risolto il railing, per un certo numero indeterminato di istruzioni. Se l'evento di interesse che si sta tentando di eseguire il debug non si verifica durante tale gap, la traccia potrebbe essere utilizzabile. Se l'evento di interesse si è verificato durante tale gap, sarà necessario registrare nuovamente la traccia.

Vedi anche

Debug di viaggi temporali - Panoramica

Note sulla versione del debug del tempo di viaggio