Condividi tramite


Sessione di traccia

Una sessione di traccia è un periodo durante il quale un provider di traccia genera messaggi di traccia. Il sistema gestisce un set di buffer per la sessione di traccia per archiviare i messaggi di traccia fino a quando non vengono recapitati ("scaricati") a un log di traccia o a un consumer di traccia.

Esistono tre tipi di base di sessioni di traccia: sessioni di log di traccia, sessioni di traccia in tempo reale e sessioni di traccia memorizzate nel buffer. Una singola sessione di traccia può essere una sessione del log di traccia, una sessione di traccia in tempo reale o entrambi. Le sessioni di traccia memorizzate nel buffer sono esclusive.

Sono inoltre disponibili sessioni di traccia privata e sessioni di traccia riservate, ad esempio la sessione di traccia NT Kernel Logger e la sessione di traccia Global Logger, che può essere eseguita come sessioni di log o sessioni in tempo reale. È possibile usare gli strumenti standard per controllare queste sessioni e visualizzare i messaggi di traccia risultanti.

Sessioni di log di traccia

In una sessione del log di traccia i messaggi di traccia vengono scritti dai buffer di traccia a un file di log in formato binario. Si tratta del tipo standard e predefinito di sessione di traccia.

Sessioni di traccia in tempo reale

In una sessione di traccia in tempo reale, i messaggi di traccia vengono recapitati direttamente a un consumer di traccia, ad esempio TraceView o Tracefmt, invece di o, oltre a essere inviati a un file di log.

Sessioni di traccia memorizzate nel buffer

In una sessione di traccia memorizzata nel buffer di traccia i messaggi di traccia rimangono nel buffer di traccia; non vengono scritti in un log di traccia o recapitati a un consumer di traccia. Il buffer viene mantenuto come un file circolare. Quando è completa, i messaggi di traccia più recenti sovrascrivono i messaggi di traccia meno recenti nel buffer.

Le sessioni di traccia memorizzate nel buffer sono supportate solo in Windows Vista e nelle versioni successive di Windows.

Anche se la traccia software, in generale, causa un sovraccarico molto ridotto, le sessioni di traccia con buffer hanno il sovraccarico minimo di tutti i tipi di sessione di traccia. È possibile tracciare per lunghi periodi di tempo e quindi, se si verifica qualcosa di interessante, è possibile usare un debugger per esaminare il contenuto del buffer corrente o salvare il contenuto del buffer corrente in un log di traccia.

Per visualizzare i messaggi di traccia in un buffer di traccia, usare l'estensione del debugger specializzato !wmitrace . Per informazioni su questa estensione, vedere Strumenti di debug per Windows.

Per scaricare il contenuto del buffer in un log di traccia, usare il parametro -f del comando tracelog -flush .

Per avviare una sessione di traccia memorizzata nel buffer, usare il parametro -buffering del comando tracelog -start . Per altre informazioni, vedere Sintassi dei comandi tracelog.

Sessioni di traccia privata

Una sessione di traccia privata è una sessione di traccia che viene eseguita in modalità utente come parte del processo in modalità utente che traccia. (Le sessioni di traccia standard vengono eseguite nel kernel. Le sessioni di traccia privata sono note anche come sessioni di traccia in modalità utente o sessioni di traccia del processo.

È possibile eseguire più sessioni di traccia privata alla volta, ma è possibile eseguire una sola sessione di traccia privata in ogni processo.

Non è possibile eseguire la traccia in tempo reale di una sessione di traccia privata. I messaggi di traccia devono essere scritti in un log.

I buffer usati nelle sessioni di traccia privata sono sempre paginabili. Non è possibile specificare memoria paginata o non paginata per questi buffer.

Non è possibile inviare i messaggi di traccia da una sessione di traccia privata al debugger. L'estensione di traccia WMI (!wmitrace) non supporta le sessioni di traccia privata.

Per altre informazioni sulle sessioni di traccia degli eventi privati, vedere la documentazione di Microsoft Windows SDK.