Condividi tramite


Debug di viaggi temporali - Registrare una traccia

Logo di debug del tempo di viaggio con un orologio.

In questa sezione viene descritto come registrare le tracce di debug del tempo di spostamento (TTD). Esistono due modi per registrare una traccia in WinDbg, Avviare eseguibile (avanzato) e Collega a un processo.

Avvia eseguibile (avanzato)

Per avviare un eseguibile e registrare una traccia TTD, seguire questa procedura.

  1. In WinDbg selezionare Avvia debug>file>eseguibile (avanzato).

  2. Immettere il percorso del file eseguibile in modalità utente da registrare o selezionare Sfoglia per passare al file eseguibile. Per informazioni sull'uso del menu Avvia eseguibile in WinDbg, vedere WinDbg - Avviare una sessione in modalità utente.

  3. Selezionare la casella Record with Time Travel Debugging (Record with Time Travel Debugging ) per registrare una traccia all'avvio dell'eseguibile.

    Screenshot di WinDbg con la casella di controllo Avvia registrazione nella schermata Avvia eseguibile (avanzato).

  4. Se si seleziona Configura e registra , sarà possibile configurare un percorso per il file di traccia.

    Screenshot della finestra di dialogo Configura registrazione con il pulsante Sfoglia e il percorso del file visualizzati.

  5. Per limitare la registrazione a moduli specifici, selezionare "Record subset of execution" e digitare i nomi dei moduli. Ad esempio, se si vuole registrare solo l'esecuzione di notepad.exe, digitare "notepad.exe" nella casella di testo. Se si desidera registrare l'esecuzione di notepad.exe e kernelbase.dll, digitare "notepad.exe,kernelbase.dll" nella casella di testo.

    Screenshot della finestra di dialogo Configura registrazione con sottoinsieme di record di esecuzione selezionata e casella di testo elenco modulo.

  6. Selezionare OK per avviare il file eseguibile e avviare la registrazione.

  7. Viene visualizzata la finestra di dialogo di registrazione che indica che è in corso la registrazione della traccia.

    Screenshot del popup di registrazione TTD con i pulsanti Arresta e Debug e Annulla.

  8. Per informazioni sulla registrazione, vedere Come registrare .

Collegarsi a un processo

Per connettersi a un processo e registrare una traccia TTD, seguire questa procedura.

  1. In WinDbg selezionare Avvia debug file>>Collega a processo.

  2. Selezionare il processo in modalità utente da tracciare. Per informazioni sull'uso di Collega a un menu di processo in WinDbg, vedere WinDbg - Avviare una sessione in modalità utente.

    Screenshot della casella di controllo Avvia registrazione in WinDbg nella schermata Connetti a processo.

  3. Selezionare la casella Record Process with Time Travel Debugging per creare una traccia all'avvio dell'eseguibile.

  4. Selezionare Connetti per avviare la registrazione.

  5. Viene visualizzata la finestra di dialogo di registrazione che indica che è in corso la registrazione della traccia.

    Screenshot del popup di registrazione TTD con le opzioni Arresta e Debug e Annulla.

  6. Per informazioni sulla registrazione, vedere Come registrare .

Come registrare

  1. Il processo viene registrato, quindi è necessario che sia necessario causare il problema di cui si vuole eseguire il debug. È possibile aprire un file problematico o selezionare un pulsante specifico nell'app per fare in modo che si verifichi l'evento di interesse.

  2. Durante la visualizzazione della finestra di dialogo di registrazione è possibile:

    • Arrestare e eseguire il debug : se si sceglie questa opzione, si arresterà la registrazione, si creerà il file di traccia e si aprirà il file di traccia in modo da poter avviare il debug.
    • Annulla : se si sceglie questa opzione, la registrazione verrà interrotta e verrà creato il file di traccia. È possibile aprire il file di traccia in un secondo momento.
  3. Al termine della registrazione, chiudere l'app o premere Arresta ed esegui il debug.

    Nota

    Sia Stop cheCancel terminano il processo associato.

  4. Quando l'applicazione registrata termina, il file di traccia verrà chiuso e scritto su disco. Questo è il caso in cui anche il programma si arresta in modo anomalo.

  5. Quando viene aperto un file di traccia, il debugger indicizza automaticamente il file di traccia. L'indicizzazione consente ricerche di valori di memoria più accurate e veloci. Questo processo di indicizzazione richiederà più tempo per i file di traccia di dimensioni maggiori.

    ...
    00007ffc`61f789d4 c3              ret
    0:000> !index
    Indexed 1/1 keyframes
    Successfully created the index in 96ms.
    

    Nota

    Un fotogramma chiave è una posizione in una traccia usata per l'indicizzazione. I fotogrammi chiave vengono generati automaticamente. Le tracce più grandi conterranno più fotogrammi chiave. Quando la traccia viene indicizzata, viene visualizzato il numero di fotogrammi chiave.

  6. A questo punto si è all'inizio del file di traccia e si è pronti a spostarsi avanti e indietro nel tempo.

    Suggerimento

    L'uso dei punti di interruzione è un approccio comune per sospendere l'esecuzione del codice a un certo evento di interesse. Univoco per TTD, è possibile impostare un punto di interruzione e tornare indietro nel tempo fino a quando tale punto di interruzione non viene raggiunto dopo la registrazione della traccia. La possibilità di esaminare lo stato del processo dopo che si è verificato un problema, per determinare la posizione migliore per un punto di interruzione, abilita flussi di lavoro di debug aggiuntivi. Per un esempio di uso di un punto di interruzione in passato, vedere Time Travel Debugging - Sample App Walkthrough (Debug di viaggi temporali - Procedura dettagliata dell'app di esempio).

Passaggi successivi

Ora che è stata registrata una traccia TTD, è possibile riprodurre la traccia o lavorare con il file di traccia, ad esempio condividendola con un collega. Per ulteriori informazioni, vedi gli argomenti seguenti.

Debug del tempo di spostamento - Riprodurre una traccia

Debug di viaggi temporali - Uso dei file di traccia

Debug di viaggi temporali - Risoluzione dei problemi

Debug di viaggi temporali - Procedura dettagliata dell'app di esempio

Vedi anche

Debug di viaggi temporali - Panoramica