Microsoft.VisualStudio.DebuggerVisualizers Namespace

Classes

DialogDebuggerVisualizer

All custom Debugger Visualizers must derive from this class to be called by VS.

VisualizerDevelopmentHost

Host class for testing during development of the Managed custom visualizer.

VisualizerObjectSource

Provides access to the object being visualized.
Subclass this class to provide custom functionality.

VisualizerObjectSourceException

Represents an exception thrown from the debuggee-side - through the EE, the visualizer infrastructure (debuggee host) or the debuggee user-code, and is thrown on the UI-side (catchable from the DialogDebuggerVisualizer).

It's a rough UI equivalent of Microsoft.VisualStudio.VIL.VisualStudioHost.DebuggeeVisualizerException.

Interfaces

IAsyncVisualizerObjectProvider

Provides an async implementation for the methods defined in IVisualizerObjectProvider2 that provide functionality to pass data from the debugee to the visualizer and vice versa.

IDeserializableObject

Interface used to deserialize objects when the underlying format (binary or JSON) is not known.

IDialogVisualizerService

Provides methods that a visualizer can call to display System.Windows forms, dialogs, and controls.

IVisualizerObjectProvider

Provides object data from the debugee to the visualizer.

IVisualizerObjectProvider2

Provides additional functionality to pass data from the debugee to the visualizer.

Examples

public class DebuggerSide : DialogDebuggerVisualizer  
{  
   override protected void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)  
   {  
      MessageBox.Show(objectProvider.GetObject().ToString());  
   }  
// . . . Other methods omitted for clarity.  
}  

Remarks

A visualizer is a small program the Visual Studio debugger uses to display, that is, visualize, an object of a specific data type in meaningful fashion. To visualize an object, a visualizer uses code that runs in the debugger process (the debugger side) and code in the process being debugged (the debuggee side).

The debugger side and debuggee side communicate with each other using VisualizerObjectSource and IVisualizerObjectProvider.

The debuggee side uses VisualizerObjectSource to specify a VisualizerObjectSource object for the debugger side. The debugger side requests and receives this information by calling methods on the IVisualizerObjectProvider interface.

A visualizer can edit, as well as display, data. If your visualizer supports editing data, you must replace the data entirely by calling ReplaceData or ReplaceObject or transfer data back to the debuggee using TransferData or TransferObject. If you want to save data back, you also need to create your own object source.