Поделиться через


Добавление меток пользователей на временную шкалу профилирования (C#, C++)

Пользовательские метки позволяют отслеживать пользовательские события для средств профилирования Visual Studio, добавляя функции разметки пользователей в код. Пользовательские метки отображаются как визуальные знаки на графиках временной шкалы. Это можно сделать для отслеживания одного события или отслеживания диапазона. Например, можно отслеживать диапазон событий stop и start.

Снимок экрана: метки пользователя профилирования.

Примечание.

Для этой функции требуется Visual Studio 2022 версии 17.11 ( предварительная версия 3). Эта функция доступна в профилировщике производительности, а не во время отладки в Центре диагностики.

Установка и настройка

Вы можете установить поддержку функции с помощью пакета NuGet или добавления правильных исходных файлов.

  • Установка с помощью пакета NuGet (C#)

    Скачайте пакет Microsoft.VisualStudio.DiagnosticsHub.UserMarks.

  • Установка путем добавления исходных файлов (C#, C++)

    После установки Visual Studio откройте следующую папку: [путь установки VS]\Common7\IDE\CommonExtensions\Platform\DiagnosticsHub.

    Для кода C# добавьте UserMarks.cs и UserMarksRange.cs в проект.

    Для собственного кода C++ добавьте UserMarks.h в проект.

Добавление меток пользователей (C#)

Добавьте следующее определение препроцессора в конфигурацию сборки проекта: DIAGHUB_ENABLE_TRACE_SYSTEM

Чтобы добавить определение в Visual Studio, выполните следующие действия.

  1. Щелкните проект правой кнопкой мыши в Обозреватель решений и выберите пункт "Свойства".

  2. Выберите символы условной > компиляции сборки>.

  3. В полях пользовательских символов для сборок отладки и выпуска добавьте DIAGHUB_ENABLE_TRACE_SYSTEM в качестве определения препроцессора.

Добавьте объект меток пользователя и выпустите его. В следующем коде показан пример добавления пользовательских меток.

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
}

Добавление меток пользователей (C++)

Чтобы использовать API собственных пользователей, добавьте UserMarks.h в проект и добавьте в приложение следующий код:

#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();

Просмотр меток пользователя

  1. Откройте проект в Visual Studio, откройте профилировщик производительности (ALT+F2), а затем выберите средство и нажмите кнопку "Пуск ".

  2. Убедитесь, что код метки пользователя, добавленный в приложение, выполняется.

    Пользователь помечает линейку над графиком временной шкалы и в таблице со сведениями о метках времени, связанных процессах и всех создаваемых сообщениях.

    На временной шкале метка пользователя отображается как инвертированные треугольники.

  3. В области "Сводка" выберите "Показать пользовательские метки", чтобы просмотреть сведения о метке пользователя.

    Снимок экрана: временная шкала.

    Сведения отображаются на вкладке "Метки пользователей".

    Снимок экрана: метки пользователя.

  4. Чтобы просмотреть сведения о метке пользователя на временной шкале, наведите указатель мыши на метки в линейке.

    Снимок экрана: указатель мыши на знак пользователя.

  5. Чтобы отфильтровать представление сведений, выберите диапазон времени на графике временной шкалы или щелкните правой кнопкой мыши строку и выберите время начала и окончания, чтобы отфильтровать график временной шкалы.

    Вы также можете отфильтровать представление, задав интервалы диапазонов или выбрав несколько пользовательских меток.

    Снимок экрана: настройка интервала метки пользователя.