Adicionar marcas de usuário à linha do tempo de criação de perfil (C#, C++)

As Marcas de Usuário permitem que você acompanhe eventos personalizados em relação às ferramentas de criação de perfil do Visual Studio adicionando funções de marca de usuário ao seu código. As marcas do usuário aparecem como marcas visuais nos gráficos da linha do tempo. Você pode fazer isso para rastrear um único evento ou rastrear um intervalo. Por exemplo, você pode acompanhar um intervalo de eventos "parar" e "iniciar".

Captura de tela mostrando marcas de usuário de criação de perfil.

Observação

Esse recurso requer o Visual Studio 2022 versão 17.11 Versão Preliminar 3. O recurso está disponível no Performance Profiler e não durante a depuração no Hub de Diagnóstico.

Instalação e configuração

Você pode instalar o suporte para o recurso usando o pacote NuGet ou adicionando os arquivos de origem corretos.

  • Instalar usando o Pacote NuGet do (C#)

    Baixe o pacote Microsoft.VisualStudio.DiagnosticsHub.UserMarks.

  • Instalar adicionando arquivos de origem (C#, C++)

    Depois de instalar o Visual Studio, abra a seguinte pasta: [Caminho de instalação do VS]\Common7\IDE\CommonExtensions\Platform\DiagnosticsHub.

    Para o código C#, adicione UserMarks.cs e UserMarksRange.cs ao seu projeto.

    Para o código C++ nativo, adicione UserMarks.h ao seu projeto.

Adicionar marcas de usuário (C#)

Adicione a seguinte definição de pré-processador à configuração de compilação do projeto: DIAGHUB_ENABLE_TRACE_SYSTEM.

Para adicionar a definição no Visual Studio:

  1. Clique com o botão direito do mouse no projeto no Gerenciador de Soluções e, em seguida, selecione Propriedades.

  2. Selecione Compilação > Geral > Símbolos de compilação condicional.

  3. Nos campos de símbolo personalizado para compilações de Depuração e Versão, adicione DIAGHUB_ENABLE_TRACE_SYSTEM como a definição do pré-processador.

Adicione o objeto de marcas do usuário e emita. O código a seguir mostra um exemplo de adição de marcas de usuário.

using Microsoft.DiagnosticsHub;

// Create a user mark
var myUserMark = new UserMarks("MyMark");

// Emit the usermark
myUserMark.Emit("Event happened!");

// Emit statically
UserMarks.EmitMessage("Emitting just a message");

// Emitting a range
using (var myRange = new UserMarkRange("MyMethodRange"))
{
   // Your code here
}

Adicionar marcas de usuário (C++)

Para usar a API de marcas de usuário nativas, adicione UserMarks.h ao projeto e adicione o seguinte código em seu aplicativo:

#define DIAGHUB_ENABLE_TRACE_SYSTEM
#include "UserMarks.h"
DIAGHUB_DECLARE_TRACE;

// Start the trace system
DIAGHUB_START_TRACE_SYSTEM();

// Initialize user marks
USERMARKS_INITIALIZE(L"User mark name");

// Initialize user mark range
USERMARKRANGE_INITIALIZE(L"Range name");

// Emit events
USERMARKS_EMIT(L"Message to emit with user mark");
USERMARKRANGE_START(L"Message to emit with range");
USERMARKRANGE_END();

// Stop the trace system
DIAGHUB_STOP_TRACE_SYSTEM();

Exibir marcas de usuário

  1. Com seu projeto aberto no Visual Studio, abra o Performance Profiler (Alt+F2), então selecione uma ferramenta e selecione o botão Iniciar.

  2. Verifique se o código de marca de usuário que você adicionou ao seu aplicativo é executado.

    As marcas de usuário são exibidas na régua acima do gráfico da linha do tempo e em uma tabela com detalhes sobre os carimbos de data/hora, o processo relacionado e as mensagens emitidas.

    Na linha do tempo, a marca do usuário aparece como um triângulo invertido.

  3. No painel Resumo, selecione Mostrar marcas do usuário para ver detalhes sobre as marcas de usuário.

    Captura de tela mostrando a linha do tempo.

    Os detalhes aparecem na guia Marcas do Usuário.

    Captura de tela mostrando as marcas do usuário.

  4. Para ver os detalhes da marca do usuário na linha do tempo, passe o mouse sobre as marcas na régua.

    Captura de tela mostrando a focalização sobre uma marca de usuário.

  5. Para filtrar a exibição de detalhes, selecione um intervalo de tempo no gráfico da linha do tempo ou clique com o botão direito do mouse em uma linha e selecione os horários de início e término para filtrar o gráfico da linha do tempo.

    Você também pode filtrar a exibição definindo intervalos em intervalos ou selecionando várias marcas de usuário.

    Captura de tela mostrando a configuração de um intervalo de marca do usuário.