EventSource 이벤트를 표식으로 시각화Visualizing EventSource Events as Markers

Concurrency 시각화는 EventSource 이벤트를 표식으로 표시할 수 있으며, 표식이 표시되는 방식을 제어할 수 있습니다.The Concurrency Visualizer can display EventSource events as markers, and you can control how the markers are displayed. EventSource 표식을 보려면 고급 설정 대화 상자를 사용하여 ETW 공급자 GUID를 등록합니다.To view the EventSource markers, register the ETW provider GUID by using the Advanced Settings dialog box. Concurrency 시각화에는 EventSource 이벤트를 플래그 표식, 범위 표식메시지 표식으로 나타내기 위한 기본 규칙이 있습니다.The Concurrency Visualizer has default conventions to represent EventSource events as Flag Markers, Span Markers, and Message Markers. 이벤트에 사용자 지정 필드를 추가하여 EventSource 이벤트가 표시되는 방식을 사용자 지정할 수 있습니다.You can customize how EventSource events are displayed by adding custom fields to the events. 표식에 대한 자세한 내용은 동시성 시각화 도우미 표식을 참조하세요.For more information about markers, see Concurrency Visualizer Markers. EventSource 이벤트에 대한 자세한 내용은 System.Diagnostics.Tracing를 참조하세요.For more information about EventSource events, see System.Diagnostics.Tracing.

EventSource 이벤트의 기본 시각화Default Visualization of EventSource Events

기본적으로 Concurrency 시각화는 다음 규칙을 사용해 EventSource 이벤트를 나타냅니다.By default, the Concurrency Visualizer uses the following conventions to represent EventSource events.

표식 종류Marker Type

  1. Opcode win:Start 또는 win:Stop이 포함된 이벤트는 각각 범위의 시작이나 끝으로 처리됩니다.Events that have Opcode win:Start or win:Stop are treated as the beginning or end of a span, respectively. 중첩되거나 겹치는 범위는 표시할 수 없습니다.Nested or overlapping spans cannot be displayed. 시작되는 스레드와 끝나는 스레드가 다른 이벤트 쌍은 표시할 수 없습니다.Event pairs that begin on one thread and end on another cannot be displayed.

  2. Opcode가 win:Start도 아니고 win:Stop도 아닌 이벤트는 해당 Level(EVENT_RECORD.EVENT_HEADER.EVENT_DESCRIPTOR의 필드)이 win:Verbose 이상인 경우가 아니면 표식 플래그로 처리됩니다.An event whose Opcode is neither win:Start nor win:Stop is treated as a marker flag unless its Level (field of EVENT_RECORD.EVENT_HEADER.EVENT_DESCRIPTOR) is win:Verbose or higher.

  3. 그 외의 모든 경우 이벤트는 메시지로 처리됩니다.In all other cases, the event is treated as a message.

중요도Importance

다음 표에는 이벤트 수준과 표식 중요도 간의 매핑 방식이 정의되어 있습니다.The following table defines how the event level maps to the marker importance.

ETW 수준ETW Level Concurrency 시각화의 중요도Concurrency Visualizer Importance
win:LogAlwayswin:LogAlways 보통Normal
win:Criticalwin:Critical 위험Critical
win:Errorwin:Error 위험Critical
win:Warningwin:Warning 높음High
win:Informationalwin:Informational 보통Normal
win:Verbosewin:Verbose 낮음Low
win:verbose보다 높은 수준Greater than win:verbose 낮음Low

계열 이름입니다.Series Name

이벤트의 작업 이름이 계열 이름에 사용됩니다.The task name of the event is used for the series name. 이벤트에 대해 작업이 정의되지 않은 경우 계열 이름은 비어 있습니다.Series name is empty if no task was defined for the event.

범주Category

Level이 win:Critical 또는 win:Error이면 범주는 Alert(-1)입니다.If the Level is win:Critical or win:Error, then the category is Alert (-1). 그렇지 않으면 범주는 기본값(0)입니다.Otherwise, the category is the default (0).

텍스트Text

이벤트에 대해 printf-type 형식의 텍스트 메시지가 정의된 경우 표식의 설명으로 해당 메시지가 표시됩니다.If a printf-type formatted text message was defined for the event, it is displayed as the description of the Marker. 그렇지 않으면 이벤트의 이름 및 각 페이로드 필드의 값이 설명으로 사용됩니다.Otherwise, the description is the name of the event and the value of each payload field.

EventSource 이벤트의 시각화 사용자 지정Customizing Visualization of EventSource Events

다음 섹션의 설명에 따라 이벤트에 적절한 필드를 추가하여 EventSource 이벤트가 표시되는 방식을 사용자 지정할 수 있습니다.You can customize how EventSource events are displayed by adding the appropriate fields to the event, as described in the following sections.

표식 종류Marker Type

cvType 필드(바이트)를 사용하여 이벤트를 나타내는 데 사용되는 표식의 종류를 제어합니다.Use the cvType field, a byte, to control the kind of marker that's used to represent the event. cvType에 사용할 수 있는 값은 다음과 같습니다.Here are the available values for cvType:

cvType 값cvType value 결과 표식 유형Resulting Marker Type
00 메시지Message
11 범위 시작Span Start
22 범위 끝Span End
33 플래그Flag
기타 모든 값All other values 메시지Message

중요도Importance

cvImportance 필드(바이트)를 사용하여 EventSource 이벤트에 대한 중요도 설정을 제어할 수 있습니다.You can use the cvImportance field, a byte, to control the importance setting for an EventSource event. 그러나 이벤트의 Level을 사용하여 표시되는 이벤트 중요도를 제어하는 것이 좋습니다.However, we recommend that you control the displayed importance of an event by using its Level.

cvImportance 값cvImportance value Concurrency 시각화의 중요도Concurrency Visualizer Importance
00 보통Normal
11 위험Critical
22 높음High
33 높음High
44 보통Normal
55 낮음Low
기타 모든 값All other values 낮음Low

계열 이름입니다.Series Name

cvSeries 이벤트 필드(문자열)를 사용하여 Concurrency 시각화가 EventSource 이벤트에 제공하는 계열 이름을 제어합니다.Use the cvSeries event field, a string, to control the series name that the Concurrency Visualizer gives to an EventSource event.

범주Category

cvCategory 필드(바이트)를 사용하여 Concurrency 시각화가 EventSource 이벤트에 제공하는 범주를 제어합니다.Use the cvCategory field, a byte, to control the category that the Concurrency Visualizer gives to an EventSource event.

텍스트Text

cvTextW 필드(문자열)를 사용하여 Concurrency 시각화가 EventSource 이벤트에 제공하는 설명을 제어합니다.Use the cvTextW field, a string, to control the description that the Concurrency Visualizer gives to an EventSource event.

SpanIDSpanID

cvSpanId 필드(정수)를 사용하여 이벤트 쌍 일치를 확인합니다.Use the cvSpanId field, an int, to match pairs of events. 범위를 나타내는 각 시작/중지 이벤트 쌍의 값은 고유해야 합니다.The value for each pair of start/stop events that represent a span must be unique. 일반적으로 동시 코드의 경우 고유한 값을 지정하려면 Exchange와 같은 동기화 기본 형식을 사용하여 키(CvSpanID에 사용되는 값)가 정확한지 확인해야 합니다.Typically for concurrent code, this requires the use of synchronization primitives such as Exchange to ensure that the key (the value that's used for CvSpanID) is correct.

참고

SpanID를 사용하여 범위를 중첩하거나, 같은 스레드에서 해당 범위를 일부분 겹치거나, 시작되는 스레드와 끝나는 스레드를 서로 다르게 지정할 수는 없습니다.The use of SpanID to nest spans, allow them to partially overlap on the same thread, or allow them to start on one thread and end on another is not supported.

참고 항목See Also

동시성 시각화 도우미 표식Concurrency Visualizer Markers