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
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.
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.
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.