Condividi tramite


Debug del tempo di spostamento - Uso dei file di traccia

Logo di debug del tempo di viaggio con un orologio.

Questa sezione descrive come usare i file creati e utilizzati dal debug del tempo di spostamento.

Panoramica dei file di traccia

Il debug di time travel usa i file seguenti per eseguire il debug dell'esecuzione del codice.

  • Il file di traccia contiene la registrazione dell'esecuzione del codice e ha un oggetto . Estensione RUN.

  • Il file di indice consente l'accesso rapido alle informazioni nel file di traccia e dispone di un oggetto . Estensione IDX.

  • La registrazione degli errori e di altro output di registrazione viene scritta nel file di log del debugger.

Traccia. File RUN

Traccia. I file RUN possono essere aperti dopo essere stati registrati usando il debug>di File>Start Apri file di traccia.

Screenshot delle opzioni di apertura file con l'opzione

Per impostazione predefinita, tutti i file di output di traccia vengono archiviati nella cartella dei documenti degli utenti. Ad esempio, per User1 i file TTD verranno archiviati qui:

C:\Users\User1\Documents

È possibile modificare il percorso dei file di traccia quando si inizia a registrare. Per altre informazioni, vedere Debug di viaggi temporali - Registrazione.

L'elenco dei file usati più di recente consente di accedere rapidamente ai file di configurazione di destinazione usati in precedenza. Sono elencati anche i file di traccia o i file di dump usati di recente.

Screenshot dell'elenco di apertura file che mostra cinque file di traccia usati di recente.

Indice. File IDX

Indice . Il file IDX viene creato per la traccia associata. Eseguire automaticamente il file quando si apre il file di traccia in WinDbg. È possibile creare manualmente il file di indice usando il comando !index. Un indice consente un accesso più rapido alle informazioni di traccia.

I file IDX possono anche essere di grandi dimensioni, in genere due volte le dimensioni di . FILE RUN.

Ricreazione dell'oggetto . File IDX

È possibile ricreare l'oggetto . File IDX da . Eseguire il file usando il !index comando . Per altre informazioni, vedere Time Travel Debugging - !index (time travel).

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

Condivisione della traccia TTD. File RUN

TTD è solo locale e non funziona in remoto con un altro computer.

I file di traccia TTD possono essere condivisi con altri utenti copiando . FILE RUN. Questo può essere utile per avere un collega aiutarvi a capire il problema. Non è necessario installare l'app che si arresta in modo anomalo o eseguire altre configurazioni correlate per tentare di riprodurre il problema. Possono semplicemente caricare il file di traccia ed eseguire il debug dell'app come se fosse installato nel PC.

Il computer in cui si riproduce la traccia TTD deve supportare tutte le istruzioni usate nel computer record, ad esempio le istruzioni AVX.

È possibile rinominare il file in modo da includere eventuali informazioni aggiuntive, ad esempio la data o un numero di bug.

Le. Non è necessario copiare il file IDX perché può essere ricreato usando il comando !index come descritto in precedenza.

Suggerimento

Quando si collabora con altri utenti, passare eventuali posizioni di traccia rilevanti correlate al problema a portata di mano. Il collaboratore può usare il !tt x:y comando per passare a quel punto esatto nel tempo nell'esecuzione del codice. Gli intervalli di posizioni temporali possono essere inclusi nelle descrizioni dei bug per tenere traccia del possibile problema.

Errore - File di log

La registrazione degli errori e di altro output di registrazione viene scritta nel file di log del debugger. Per visualizzare il file di log, selezionare Visualizza>log.

Questo esempio mostra il testo del log degli errori quando si tenta di avviare e registrare un eseguibile denominato Foo.exe che non si trova nella directory 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.

Dimensioni del file di traccia

I file di traccia TTD possono diventare davvero grandi ed è importante assicurarsi di disporre di spazio disponibile su disco sufficiente. Se si registra un'app o un processo anche solo per alcuni minuti, il file di traccia può aumentare di dimensioni diverse gigabyte. Le dimensioni del file di traccia dipendono da diversi fattori descritti di seguito.

TTD non imposta una dimensione massima dei file di traccia per consentire scenari complessi a esecuzione prolungata. Ricreando rapidamente il problema, manterrà le dimensioni del file di traccia il più piccolo possibile.

Fattori relativi alle dimensioni dei file di traccia

Non è possibile fornire una stima esatta delle dimensioni del file di traccia, ma esistono alcune regole di identificazione personale per comprendere le dimensioni dei file TTD.

I fattori seguenti possono influire sulle dimensioni del file di traccia:

  • Numero di istruzioni di codice eseguite in tutti i thread durante la registrazione dell'app o del processo in esecuzione
  • Periodo di tempo durante il quale l'app o il processo è stato registrato (solo in quanto ciò influisce sul numero di istruzioni di codice registrate)
  • Dimensioni dei dati di memoria usati dall'app o dal processo

Il numero di istruzioni eseguite e registrate è il fattore più importante che influisce sulle dimensioni del file di traccia. Una traccia richiede in genere tra 1 bit e 1 byte per ogni istruzione eseguita. È probabile che una traccia sia verso l'estremità inferiore di tale intervallo quando il programma registrato esegue un numero minore di funzioni distinte e opera su un set di dati più piccolo. È probabile che una traccia sia verso l'estremità superiore di tale intervallo quando il programma registrato esegue un numero maggiore di funzioni distinte o opera su un set di dati più ampio.

Regola di dimensioni del file di traccia

Il file di traccia aumenta approssimativamente da 5 MB a 50 MB al secondo durante la registrazione di un'app o un processo attivo, a seconda dei fattori di dimensioni del file di traccia identificati in precedenza.

Il file di traccia non crescerà quando l'app o il processo registrato è inattiva (ad esempio, quando è in attesa di input).

Attualmente non esiste alcun limite massimo per le dimensioni dei file di traccia. WinDbg può riprodurre i file di traccia ben contenuti nelle centinaia di gigabyte di dimensioni.

Dimensioni del file di indice

Il file di indice viene creato automaticamente da WinDbg quando si apre una traccia per la prima volta. Contiene informazioni che consentono al debugger di riprodurre le informazioni di traccia ed eseguire query sulla memoria in modo più efficiente. Le dimensioni in genere vanno da 1 a 2 volte le dimensioni del file di traccia. I fattori che ne influiscono sulle dimensioni sono simili a quelli che influiscono sulle dimensioni del file di traccia.

Prima di tutto, la dimensione del file di indice viene ridimensionata rispetto alla lunghezza della traccia. Una traccia che contiene un numero maggiore di istruzioni registrate avrà in genere un indice più grande.

In secondo luogo, la dimensione dell'indice viene ridimensionata rispetto all'ampiezza degli accessi alla memoria. Se il programma registrato di frequente ha eseguito l'accesso a un numero elevato di posizioni di memoria distinte, l'indice sarà in genere più grande rispetto a se il programma registrato ha eseguito l'accesso a un numero minore di posizioni di memoria distinte o se l'accesso alle posizioni di memoria era meno frequente.

Poiché questi fattori sono simili ai fattori che influiscono sulle dimensioni del file di traccia, le dimensioni del file di indice vengono in genere ridimensionate rispetto alle dimensioni del file di indice (pertanto la stima che in genere è compresa tra 1x e 2x le dimensioni del file di traccia).

Cosa accade se si esaurisce lo spazio su disco?

Sia i file di traccia TTD che i file di indice vengono scritti su disco. Attualmente non esiste una limitazione massima delle dimensioni dei file per il file di traccia o di indice. Le dimensioni del file di traccia aumentano fino a quando non si arresta la registrazione o si supera la quantità di spazio disponibile su disco.

Durante la registrazione: TTD scriverà l'ultima pagina nel file di traccia e quindi attenderà in modo efficace fino a quando non potrà scrivere di nuovo. WinDbg continua a visualizzare la finestra di dialogo Registrazione, ma non visualizza un messaggio di errore/avviso quando si esaurisce lo spazio su disco durante la registrazione.

L'esaurimento dello spazio su disco durante la registrazione comporta un file di traccia con un record incompleto dell'esecuzione del codice. Il file di traccia incompleto può essere aperto in WinDbg, ma potrebbe non includere il problema effettivo se l'errore si verifica dopo l'esaurimento dello spazio su disco durante la scrittura del file di traccia.

Soluzione alternativa: aprire Esplora file e verificare se lo spazio disponibile sul disco (ad esempio C: unità) è vicino a zero. In alternativa, osservare la traccia (. File RUN) in Esplora file (impostazione predefinita nella cartella Documenti) e, se non si aumenta regolarmente le dimensioni, la registrazione potrebbe essere in attesa. Selezionare il pulsante Arresta e debug in WinDbg, liberare spazio o salvare in un altro disco e avviare di nuovo la registrazione.

Durante l'indicizzazione: il debugger può produrre un file di indice non valido, causando un comportamento imprevedibile nel debugger o l'host del motore di debugger potrebbe arrestarsi in modo anomalo.

Soluzione alternativa: chiudere il debugger ed eliminare qualsiasi file di indice (con estensione idx) che potrebbe esistere per la traccia. Liberare spazio su disco sufficiente o spostare il file di traccia in un disco diverso con spazio libero sufficiente. Aprire di nuovo la traccia nel debugger ed eseguire !index per creare un nuovo indice corretto. L'indicizzazione non modifica il file di traccia originale (con estensione run), quindi non verranno persi dati.

Vedi anche

Debug di viaggi temporali - Panoramica