方法 : ビジュアライザを使用する
更新 : 2007 年 11 月
このトピックの内容は、次の製品に該当します。
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
マネージのみ |
|||
Standard |
マネージのみ |
|||
Pro/Team |
マネージのみ |
表の凡例 :
対象 |
|
該当なし |
|
既定で非表示のコマンド |
Object および Array を除く任意のマネージ クラスのオブジェクトのカスタム ビジュアライザを記述できます。
デバッガ ビジュアライザのアーキテクチャには、次の 2 つの部分があります。
デバッガ側 - Visual Studio デバッガ内で動作します。デバッガ側のコードは、ビジュアライザのユーザー インターフェイスを作成し、表示します。
デバッグ対象側 - Visual Studio がデバッグしているプロセス (デバッグ対象) 内で動作します。
視覚化するデータ オブジェクト (String オブジェクトなど) は、デバッグ対象プロセスに存在します。このためデバッグ対象側では、そのデータ オブジェクトをデバッガ側に送る必要があります。これによって、デバッガ側では、作成したユーザー インターフェイスを使ってデータ オブジェクトを表示できるようになります。
デバッガ側は、IVisualizerObjectProvider インターフェイスを実装するオブジェクト プロバイダから、視覚化するデータ オブジェクトを受け取ります。デバッグ対象側は、VisualizerObjectSource から派生するオブジェクト ソースを介してデータ オブジェクトを送ります。オブジェクト プロバイダは、オブジェクト ソースにデータを戻すこともできます。このため、データの表示だけでなく編集もできるビジュアライザを記述できます。オブジェクト プロバイダは、式エバリュエータと通信することでオブジェクト ソースと通信するようにオーバーライドできます。
デバッグ対象側とデバッガ側は、Stream を介して相互に通信します。データ オブジェクトを Stream にシリアル化し、Stream をデータ オブジェクトに逆シリアル化するメソッドが用意されています。
デバッグ対象側のコードは、DebuggerVisualizer 属性 (DebuggerVisualizerAttribute) で指定します。
デバッガ側でビジュアライザ ユーザー インターフェイスを作成するには、DialogDebuggerVisualizer を継承するクラスを作成し、DialogDebuggerVisualizer.Show メソッドをオーバーライドしてインターフェイスを表示する必要があります。
IDialogVisualizerService を使用すると、Windows フォーム、ダイアログ ボックス、およびコントロールをビジュアライザによって表示できます。
ジェネリック型のサポートは制限されています。ジェネリック型がオープン型の場合にのみ、そのジェネリック型のビジュアライザを記述できます。この制限は、DebuggerTypeProxy 属性を使用する場合の制限と同じです。詳細については、「DebuggerTypeProxy 属性の使用」を参照してください。
カスタムのビジュアライザでは、セキュリティについての配慮が必要な場合があります。詳細については、「ビジュアライザのセキュリティに関する考慮事項」を参照してください。
ビジュアライザのアーキテクチャの詳細については、「ビジュアライザのアーキテクチャ」を参照してください。
以下の手順は、ビジュアライザを作成するために必要な作業の概要を示したものです。詳細については、「チュートリアル : C# でビジュアライザを記述する」を参照してください。
デバッガ側を作成するには
IVisualizerObjectProvider メソッドを使用して、視覚化するオブジェクトをデバッガ側で取得します。
DialogDebuggerVisualizer を継承するクラスを作成します。
DialogDebuggerVisualizer.Show メソッドをオーバーライドしてインターフェイスを表示します。IDialogVisualizerService メソッドを使用して、Windows フォーム、ダイアログ ボックス、およびコントロールをインターフェイスの一部として表示します。
DebuggerVisualizerAttribute をビジュアライザ (DialogDebuggerVisualizer) に適用します。
デバッグ対象側を作成するには
DebuggerVisualizerAttribute をビジュアライザ (DialogDebuggerVisualizer) とオブジェクト ソース (VisualizerObjectSource) に適用します。オブジェクト ソースを省略すると、既定のオブジェクト ソースが使用されます。
ビジュアライザでデータ オブジェクトを表示するだけでなく、編集できるようにする場合は、VisualizerObjectSource の TransferData メソッドまたは CreateReplacementObject メソッドをオーバーライドする必要があります。