プロファイリング タイムラインにユーザー マークを追加する (C#、C++)
ユーザー マークを使用すると、コードにユーザー マーク関数を追加することで、Visual Studio のプロファイリング ツールに対してカスタム イベントを追跡できます。 ユーザー マークはタイムライン グラフに視覚的なマークとして表示されます。 これを行うと、1 つのイベントを追跡したり、範囲を追跡したりすることができます。 たとえば、"stop" イベント範囲と "start" イベント範囲を追跡できます。
Note
この機能には、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.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) を開き、ツールを選択して [スタート] ボタンを選択します。
アプリに追加したユーザー マーク コードが実行されることを確認します。
タイムライン グラフの上のルーラーと、タイムスタンプ、関連するプロセス、および出力したメッセージに関する詳細を含むテーブルにユーザー マークが表示されます。
タイムラインでは、ユーザー マークが逆三角形として表示されます。
[概要] ペインで [ユーザー マークの表示] を選択するとユーザー マークの詳細が表示されます。
[ユーザー マーク] タブに詳細が表示されます。
タイムラインでユーザー マークの詳細を表示するには、ルーラーのマークの上にマウス ポインターを置きます。
詳細ビューをフィルタリングするには、タイムライン グラフで時間範囲を選択するか、行を右クリックして開始時刻と終了時刻を選択してタイムライン グラフをフィルタリングします。
範囲に間隔を設定するか、複数のユーザー マークを選択してビューをフィルタリングすることもできます。