Condividi tramite


Visualizzare eventi EventSource come marcatori

Il visualizzatore di concorrenza consente di visualizzare gli eventi EventSource come marcatori ed è possibile controllare la modalità di visualizzazione dei marcatori. Per visualizzare i marcatori EventSource, registrare il GUID del provider ETW mediante la finestra di dialogo Impostazioni avanzate. Il visualizzatore di concorrenza usa convenzioni predefinite per rappresentare gli eventi EventSource come marcatori di flag, marcatori di span e marcatori di messaggi. È possibile personalizzare la modalità di visualizzazione degli eventi EventSource aggiungendo campi personalizzati agli eventi. Per altre informazioni sui marcatori, vedere Marcatori del visualizzatore di concorrenza. Per altre informazioni sugli eventi EventSource, vedere System.Diagnostics.Tracing.

Visualizzazione predefinita degli eventi EventSource

Per impostazione predefinita, il visualizzatore di concorrenza usa le convenzioni seguenti per rappresentare gli eventi EventSource.

Tipo di marcatore

  1. Gli eventi con codice operativo win:Start o win:Stop vengono considerati come l'inizio o la fine di una sezione span, rispettivamente. Le sezioni span annidate o sovrapposte non possono essere visualizzate. Le coppie di eventi che iniziano in un thread di inizio e finiscono in un altro non possono essere visualizzate.

  2. Un evento il cui codice operativo non è win:Start né win:Stop viene considerato come un flag di marcatore, a meno che il relativo livello (campo di EVENT_RECORD.EVENT_HEADER.EVENT_DESCRIPTOR) non sia win:Verbose o superiore.

  3. In tutti gli altri casi, l'evento viene considerato un messaggio.

Priorità

La tabella seguente illustra il mapping tra il livello di evento e l'importanza del marcatore.

Livello ETW Importanza del visualizzatore di concorrenza
win:LogAlways Normale
win:Critical Critico
win:Error Critico
win:Warning Alto
win:Informational Normale
win:Verbose Ridotto
Superiore a win:verbose Ridotto

Nome della serie

Il nome dell'attività dell'evento viene usato per il nome della serie. Il nome della serie è vuoto se è non stata definita alcuna attività per l'evento.

Category

Se il livello è win:Critical o win:Error, la categoria è Avviso (-1). In caso contrario, la categoria è quella predefinita (0).

Testo

Se è stato definito un messaggio di testo formattato come printf-type per l'evento, viene visualizzato come descrizione del marcatore. In caso contrario, la descrizione è il nome dell'evento e il valore di ogni campo Payload.

Personalizzare la visualizzazione degli eventi EventSource

È possibile personalizzare la modalità di visualizzazione degli eventi EventSource aggiungendo i campi appropriati all'evento, come descritto nelle sezioni seguenti.

Tipo di marcatore

Usare il campo cvType, un byte, per controllare il tipo di marcatore usato per rappresentare l'evento. Di seguito sono riportati i valori disponibili per cvType:

Valore cvType Tipo di marcatore risultante
0 Message
1 Inizio sezione span
2 Fine sezione span
3 Flag
Tutti gli altri valori Message

Priorità

È possibile usare il campo cvImportance, un byte, per controllare l'impostazione dell'importanza per un evento EventSource. È tuttavia consigliabile controllare l'importanza visualizzata di un evento usando il relativo livello.

Valore cvImportance Importanza del visualizzatore di concorrenza
0 Normale
1 Critico
2 Alto
3 Alto
4 Normale
5 Ridotto
Tutti gli altri valori Ridotto

Nome della serie

Usare il campo evento cvSeries, una stringa, per controllare il nome della serie assegnato dal visualizzatore di concorrenza a un evento EventSource.

Category

Usare il campo cvCategory, un byte, per controllare la categoria assegnata dal visualizzatore di concorrenza a un evento EventSource.

Testo

Usare il campo cvTextW, una stringa, per controllare la descrizione assegnata dal visualizzatore di concorrenza a un evento EventSource.

SpanID

Usare il campo cvSpanId, un valore int, per associare coppie di eventi. Il valore per ogni coppia di eventi di inizio/fine che rappresentano una sezione span deve essere univoco. In genere, per il codice simultaneo è necessario usare a questo scopo primitive di sincronizzazione, come Exchange, per garantire che la chiave (il valore usato per CvSpanID) sia corretta.

Nota

L'uso di SpanID per annidare sezioni span, consentirne la parziale sovrapposizione nello stesso thread o consentirne l'inizio in un thread e la fine in un altro non è supportato.