Partilhar via


Visualizar eventos EventSource como marcadores

A Visualização Simultânea pode exibir eventos do EventSource como marcadores e você pode controlar como os marcadores são exibidos. Para exibir os marcadores do EventSource, registre o GUID do provedor ETW usando a caixa de diálogo Configurações Avançadas. A Visualização Simultânea tem convenções padrão para representar eventos do EventSource como Marcadores de Sinalizador, Marcadores de Período e Marcadores de Mensagem. Você pode personalizar como os eventos EventSource são exibidos, adicionando campos personalizados aos eventos. Para obter mais informações sobre marcadores, consulte Marcadores da Visualização Simultânea. Para obter mais informações sobre eventos do EventSource, consulte System.Diagnostics.Tracing.

Visualização padrão de eventos do EventSource

Por padrão, a Visualização Simultânea usa as seguintes convenções para representar eventos do EventSource.

Tipo de marcador

  1. Eventos que tenham Opcode win:Start ou win:Stop são tratados como o início ou fim de um período, respectivamente. Períodos aninhados ou sobrepostos não podem ser exibidos. Pares de eventos que começam em um thread e terminam em outro não podem ser exibidos.

  2. Um evento cujo Opcode não é win:Start nem win:Stop é tratado como um sinalizador de marcador, a menos que seu Nível (campo de EVENT_RECORD.EVENT_HEADER.EVENT_DESCRIPTOR) seja win:Verbose ou superior.

  3. Em todos os outros casos, o evento é tratado como uma mensagem.

Importância

A tabela a seguir define como o nível do evento mapeia para a importância de marcador.

Nível ETW Importância da Visualização Simultânea
win:LogAlways Normal
win:Critical Crítico
win:Error Crítico
win:Warning Alto
win:Informational Normal
win:Verbose Baixo
Maior que win:verbose Baixo

Nome da série

O nome da tarefa do evento é usado para o nome da série. O nome da série está vazio se nenhuma tarefa tiver sido definida para o evento.

Categoria

Se o nível for win:Critical ou win:Error, a categoria será Alerta (-1). Caso contrário, a categoria será padrão (0).

Texto

Se uma mensagem de texto formatada do tipo printf tiver sido definida para o evento, ela será exibida como a descrição do Marcador. Caso contrário, a descrição será o nome do evento e o valor de cada campo de carga.

Personalizar a visualização de Eventos do EventSource

Você pode personalizar como os eventos do EventSource são exibidos, adicionando os campos apropriados ao evento, conforme descrito nas seções a seguir.

Tipo de marcador

Use o campo cvType, um byte, para controlar o tipo de marcador que é usado para representar o evento. Aqui estão os valores disponíveis para cvType:

Valor de cvType Tipo de Marcador Resultante
0 Mensagem
1 Intervalo Inicial
2 Intervalo final
3 Sinalizador
Todos os outros valores Mensagem

Importância

Você pode usar o campo cvImportance, um byte, para controlar a configuração de importância para um evento do EventSource. No entanto, é recomendável que você controle a importância exibida de um evento usando o seu nível.

Valor de cvImportance Importância da Visualização Simultânea
0 Normal
1 Crítico
2 Alto
3 Alto
4 Normal
5 Baixo
Todos os outros valores Baixo

Nome da série

Use o campo de evento cvSeries, uma cadeia de caracteres, para controlar o nome que a Visualização Simultânea dá a um evento do EventSource.

Categoria

Use o campo cvCategory, um byte, para controlar a categoria que a Visualização Simultânea dá a um evento do EventSource.

Texto

Use o campo cvTextW, uma cadeia de caracteres, para controlar a descrição que a Visualização Simultânea dá a um evento do EventSource.

SpanID

Use o campo cvSpanId, int, para fazer a correspondência de pares de eventos. O valor para cada par de eventos de iniciar/parar que representa um intervalo deve ser exclusivo. Normalmente, para código simultâneo, ele requer o uso dos primitivos de sincronização, como Exchange, para garantir que a chave (o valor que é usado para CvSpanID) esteja correto.

Observação

O uso de SpanID para aninhar intervalos, permitir que eles parcialmente sobreponham o mesmo thread ou permitir que eles comecem em um thread e terminem em outro não tem suporte.