在分析时间线上添加用户标记 (C#, C++)

通过在代码中添加用户标记函数,用户标记可以根据 Visual Studio 的分析工具来跟踪自定义事件。 用户标记在时间线图上显示为可视标记。 这样既可以跟踪单个事件,也可以跟踪某个范围。 例如,可以跟踪“停止”和“开始”事件范围。

显示分析用户标记的屏幕截图。

注意

此功能需要使用 Visual Studio 2022 17.11 Preview 3 版本。 此功能在性能探查器中可用,在诊断中心进行调试时不可用。

安装和设置

可以使用 NuGet 包或添加正确的源文件来安装对该功能的支持。

  • 使用 NuGet 包进行安装 (C#)

    下载包,Microsoft.VisualStudio.DiagnosticsHub.UserMarks

  • 通过添加源文件进行安装 (C#, C++)

    安装 Visual Studio 后,打开以下文件夹:[VS 安装路径]\Common7\IDE\CommonExtensions\Platform\DiagnosticsHub

    对于 C# 代码,请将 UserMarks.csUserMarksRange.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. 要筛选详细信息视图,请在时间线图中选择时间范围,或右键单击某行并选择开始时间和结束时间以筛选时间线图。

    还可以通过设置范围间隔或选择多个用户标记来筛选视图。

    显示设置用户标记间隔的屏幕截图。