Microsoft.VisualStudio.DebuggerVisualizers Namespace



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


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


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


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.



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.


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


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


Provides object data from the debugee to the visualizer.


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


public class DebuggerSide : DialogDebuggerVisualizer  
   override protected void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)  
// . . . Other methods omitted for clarity.  


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.