Wizualizowanie zdarzeń i znaczników EventSource
Przy pomocy programu Concurrency Visualizer można wyświetlać zdarzenia EventSource jako znaczniki oraz kontrolować sposób wyświetlania znaczników.Aby wyświetlić znaczniki EventSource należy zarejestrować GUID dostawcy ETW za pomocą okna dialogowego Ustawienia zaawansowane.Program Concurrency Visualizer posiada domyślne konwencje reprezentowania zdarzeń EventSource jako Znaczniki typu flaga, Znaczniki zakresu oraz Znaczniki komunikatu.Można dostosować sposób wyświetlania zdarzeń EventSource przez dodanie do zdarzenia pól niestandardowych.Aby uzyskać więcej informacji na temat znaczników, zobacz Znaczniki Concurrency Visualizer.Aby uzyskać więcej informacji dotyczących zdarzeń EventSource, zobacz System.Diagnostics.Tracing.
Domyślna wizualizacja zdarzeń EventSource
Domyślnie program Concurrency Visualizer używa następujących konwencji do reprezentowania zdarzeń EventSource.
Typ znacznika
Zdarzenia, które posiadają Opcode win:Start lub win:Stop są traktowane odpowiednio jako początek lub koniec zakresu. Zagnieżdżone lub nakładające się zakresy nie zostaną wyświetlone.Nie zostaną wyświetlone pary zdarzeń, które rozpoczynają się w jednym a kończą w innym wątku.
Zdarzenie, którego Opcode nie jest ani win:Start ani win: Stop jest traktowane jako flaga znacznika, chyba że jego Poziom (pola EVENT_RECORD.EVENT_HEADER.EVENT_DESCRIPTOR) to win:Verbose lub wyższy.
W innych przypadkach zdarzenie jest traktowane jako wiadomość.
Ważność
W poniższej tabeli opisano sposób mapowania poziomu zdarzenia na znacznik ważności.
Poziom ETW |
Ważność Concurrency Visualizer |
---|---|
win:LogAlways |
Normal |
win:Critical |
Krytyczny |
win:Error |
Krytyczny |
win:Warning |
Wysoki |
win:Informational |
Normal |
win:Verbose |
Niski |
Większy niż win:verbose |
Niski |
Nazwa serii
Nazwa zadania zdarzenia używanego dla nazwy serii.Nazwa serii jest pusta, jeśli zadanie nie zostało zdefiniowane dla zdarzenia.
Kategoria
Jeśli poziom to win:Critical lub win:Error wtedy kategoria to Alert (-1).W przeciwnym razie kategoria jest domyślna (0).
Tekst
Jeśli wiadomość tekstowa sformatowana typu prinf została zdefiniowana dla zdarzenia, jest ona wyświetlana jako opis Znacznika.W przeciwnym razie opis jest nazwą zdarzenia i wartością każdego pola ładunku.
Dostosowywanie wizualizacji zdarzeń EventSource
Można dostosować sposób wyświetlania zdarzeń EventSource dodając odpowiednie pola do zdarzenia, jak zostało to opisane w poniższych sekcjach.
Typ znacznika
Użyj pola cvType, bajtu, aby kontrolować rodzaj znacznika, który jest używany do reprezentacji zdarzenia.Oto dostępne wartości dla cvType:
wartość cvType |
Wynikowy typ znacznika |
---|---|
0 |
Wiadomość |
1 |
Początek zakresu |
2 |
Koniec zakresu |
3 |
Flaga |
Wszystkie inne wartości |
Wiadomość |
Ważność
Można użyć pola cvImportance, bajtu, aby kontrolować ustawienie ważności dla zdarzenia EventSource.Jednak zaleca się, aby kontrolować wyświetlaną ważność zdarzenia przy użyciu jego poziomu.
wartość cvImportance |
Ważność Concurrency Visualizer |
---|---|
0 |
Normal |
1 |
Krytyczny |
2 |
Wysoki |
3 |
Wysoki |
4 |
Normal |
5 |
Niski |
Wszystkie inne wartości |
Niski |
Nazwa serii
Użyj pola zdarzeń cvSeries, ciągu, aby kontrolować nazwę serii, którą ustawia program Concurrency Visualizer dla zdarzenia EventSource.
Kategoria
Użyj pola cvCategory, bajtu, aby kontrolować kategorię, którą ustawia program Concurrency Visualizer dla zdarzenia EventSource.
Tekst
Użyj pola cvTextW, ciągu, aby kontrolować opis, który ustawia program Concurrency Visualizer dla zdarzenia EventSource.
SpanID
Użyj pola cvSpanId, wartość całkowita, aby dopasować pary zdarzeń.Wartość dla każdej pary zdarzeń uruchomienia i zatrzymania, która reprezentuje zakres musi być unikatowa.Zazwyczaj dla kodu współbieżnego wymaga to wykorzystania prymitywów synchronizacji takich jak Exchange w celu zapewnienia poprawnego klucza (wartość jest używana do CvSpanID).
[!UWAGA]
Użycie SpanID, aby zagnieździć zakresy, umożliwić im częściowe pokrywanie się w tym samym wątku lub umożliwienie uruchomienie w jednym wątku i zakończenie w innym nie jest obsługiwane.