在分析时间线上添加用户标记 (C#, C++)
通过在代码中添加用户标记函数,用户标记可以根据 Visual Studio 的分析工具来跟踪自定义事件。 用户标记在时间线图上显示为可视标记。 这样既可以跟踪单个事件,也可以跟踪某个范围。 例如,可以跟踪“停止”和“开始”事件范围。
注意
此功能需要使用 Visual Studio 2022 17.11 Preview 3 版本。 此功能在性能探查器中可用,在诊断中心进行调试时不可用。
安装和设置
可以使用 NuGet 包或添加正确的源文件来安装对该功能的支持。
使用 NuGet 包进行安装 (C#)
通过添加源文件进行安装 (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 中添加定义:
右键单击解决方案资源管理器中的项目,然后选择属性。
选择生成 > 常规 > 条件编译符号。
在调试和发布版本的自定义符号字段中,添加
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();
查看用户标记
在 Visual Studio 中打开项目后,打开性能探查器 (Alt + F2),然后选择一个工具,然后选择“开始”按钮。
确保添加到应用程序中的用户标记代码可以运行。
用户标记会显示在时间线图上方的标尺上,并以表格形式显示,其中包含时间戳、相关进程和发出的任何信息的详细信息。
在时间线上,用户标记显示为一个倒三角形。
在“摘要”窗格中,选择“显示用户标记”以查看有关用户标记的详细信息。
详细信息显示在“用户标记”选项卡中。
要查看时间线中的用户标记详细信息,请将鼠标悬停在标尺中的标记上。
要筛选详细信息视图,请在时间线图中选择时间范围,或右键单击某行并选择开始时间和结束时间以筛选时间线图。
还可以通过设置范围间隔或选择多个用户标记来筛选视图。