次の方法で共有


方法 : ビジュアライザーを記述する

Object および Array を除く任意のマネージ クラスのオブジェクトのカスタム ビジュアライザーを記述できます。

デバッガー ビジュアライザーのアーキテクチャには、次の 2 つの部分があります。

  • デバッガー側 - Visual Studio デバッガー内で動作します。デバッガー側のコードは、ビジュアライザーのユーザー インターフェイスを作成し、表示します。

  • デバッグ対象側 - Visual Studio がデバッグしているプロセス (デバッグ対象) 内で動作します。

視覚化するデータ オブジェクト (String オブジェクトなど) は、デバッグ対象プロセスに存在します。このためデバッグ対象側では、そのデータ オブジェクトをデバッガー側に送る必要があります。これによって、デバッガー側では、作成したユーザー インターフェイスを使ってデータ オブジェクトを表示できるようになります。

デバッガー側は、IVisualizerObjectProvider インターフェイスを実装するオブジェクト プロバイダーから、視覚化するデータ オブジェクトを受け取ります。デバッグ対象側は、VisualizerObjectSource から派生するオブジェクト ソースを介してデータ オブジェクトを送ります。オブジェクト プロバイダーは、オブジェクト ソースにデータを戻すこともできます。このため、データの表示だけでなく編集もできるビジュアライザーを記述できます。オブジェクト プロバイダーは、式エバリュエーターと通信することでオブジェクト ソースと通信するようにオーバーライドできます。

デバッグ対象側とデバッガー側は、Stream を介して相互に通信します。データ オブジェクトを Stream にシリアル化し、Stream をデータ オブジェクトに逆シリアル化するメソッドが用意されています。

デバッグ対象側のコードは、DebuggerVisualizer 属性 (DebuggerVisualizerAttribute) で指定します。

デバッガー側でビジュアライザー ユーザー インターフェイスを作成するには、DialogDebuggerVisualizer を継承するクラスを作成し、DialogDebuggerVisualizer.Show メソッドをオーバーライドしてインターフェイスを表示する必要があります。

IDialogVisualizerService を使用すると、Windows フォーム、ダイアログ、およびコントロールをビジュアライザーによって表示できます。

ジェネリック型のサポートは制限されています。ジェネリック型がオープン型の場合にのみ、そのジェネリック型のビジュアライザーを記述できます。この制限は、DebuggerTypeProxy 属性を使用する場合の制限と同じです。詳細については、「DebuggerTypeProxy 属性の使用」を参照してください。

カスタムのビジュアライザーでは、セキュリティについての配慮が必要な場合があります。ビジュアライザーのセキュリティに関する考慮事項 を参照してください。

以下の手順は、ビジュアライザーの作成に必要な作業の概要を示したものです。詳細については、「チュートリアル : C# でビジュアライザーを記述する」を参照してください。

デバッガー側を作成するには

  1. IVisualizerObjectProvider メソッドを使用して、視覚化するオブジェクトをデバッガー側で取得します。

  2. DialogDebuggerVisualizer を継承するクラスを作成します。

  3. DialogDebuggerVisualizer.Show メソッドをオーバーライドしてインターフェイスを表示します。IDialogVisualizerService メソッドを使用して、Windows フォーム、ダイアログ、およびコントロールをインターフェイスの一部として表示します。

  4. DebuggerVisualizerAttribute をビジュアライザー (DialogDebuggerVisualizer) に適用します。

デバッグ対象側を作成するには

  1. DebuggerVisualizerAttribute をビジュアライザー (DialogDebuggerVisualizer) とオブジェクト ソース (VisualizerObjectSource) に適用します。オブジェクト ソースを省略すると、既定のオブジェクト ソースが使用されます。

  2. ビジュアライザーでデータ オブジェクトを表示するだけでなく、編集できるようにする場合は、VisualizerObjectSource の TransferData メソッドまたは CreateReplacementObject メソッドをオーバーライドする必要があります。

参照

処理手順

方法 : ビジュアライザーをインストールする

方法 : ビジュアライザーをテストおよびデバッグする

概念

ビジュアライザーのセキュリティに関する考慮事項

その他の技術情報

ビジュアライザー