プロファイリング タイムラインにユーザー マークを追加する (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.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. 詳細ビューをフィルタリングするには、タイムライン グラフで時間範囲を選択するか、行を右クリックして開始時刻と終了時刻を選択してタイムライン グラフをフィルタリングします。

    範囲に間隔を設定するか、複数のユーザー マークを選択してビューをフィルタリングすることもできます。

    ユーザー マーク間隔の設定を示すスクリーンショット。