Scott on Writing

Musings on technical writing...

Debugging Visualizers in Visual Studio 2005

One of the cool new features of Visual Studio 2005 is the Debugger Visualizer, which provides an alertnate way to view an object in the VS 2005 debugger. What's especially cool about these little gems is that not only does Visual Studio ship with a number of buit-in visualizers for viewing long strings, XML, HTML, images, and so on, but also provides a mechanism for developers to be able to create their own visualizers and plug them into Visual Studio. (See Creating a Debugger Visualizer Using Visual Studio for more information.)

Yesterday, Scott Guthrie posted a blog entry about free debugger visualizers released by various folks in the community, such as an XML visualizer, and a regular expression visualizer. What really caught my eye, though, was K. Scott Allen's control hierarchy visualizer. With this visualizer you can view the control hierarchy rooted at the control whose little magnifying glass icon you click to load the visualizer.

Since Scott kindly gives the source code for his visualizer, I was able to poke around and add a new feature: in addition to seeing the controls in the hierarchy I also added nodes for the controls' properties (and their values). This required just a few lines of code to perform the reflection on each control in the hierarchy. (FYI, it takes a couple seconds to load up on pages with rather large control hierarchies...) Plus I added a little color and icons, just to spruce things up a tad.  :-)

You can download my additions to Scott's visualizer: WebVisualizers.zip. To quote from Scott's blog entry:

To install the a visualizer you have to build the source code. You can build with  Visual Studio, or from the command line msbuild OdeToCode.WebVisualizers.csproj, assuming msbuild.exe is in the path. Copy the .dll from underneath the bin directory into MyDocuments\Visual Studio 2005\Visualizers. VS will automatically load the assembly when debugging, and inspect the metadata inside to know what types to visualize. Note: custom visualizers won't load for a web site running at less than full trust.

posted on Friday, January 13, 2006 12:27 PM

Feedback

# re: Debugging Visualizers in Visual Studio 2005 1/14/2006 7:58 PM Scott Allen

Cool stuff!

# More Debugger Visualizer Goodness 1/17/2006 12:13 PM Scott on Writing

# re: Debugging Visualizers in Visual Studio 2005 1/23/2006 5:21 AM Gregor Suttie

Ok idiots guide required - I have copied the dll to the correct location and ran the application - should I be looking for a particular window or what? I added <trust level="Full" originUrl=""/> to the web.config but lost as to how to use the visualizers.

Many thanks
Greg

# re: Debugging Visualizers in Visual Studio 2005 1/23/2006 10:15 AM Scott Mitchell

Gregor, once you've copied over the DLL set a breakpoint and start debugging. When you hit the breakpoint and enter the debugger, add to the Watch window a control in the control hierarchy (such as Page, or the ID of a TextBox/CheckBox/etc.). Then you should see a magnifying glass icon in the Watch window for that item - click that.

I discuss this technique in more detail in the following article:

Improved Debugging with Visual Studio 2005's Debugger Visualizers
http://aspnet.4guysfromrolla.com/articles/011806-1.aspx

hth

# re: Debugging Visualizers in Visual Studio 2005 4/19/2006 6:40 PM Jason Finch

I've just tried running this, and when I attempt to visualize a control I get this error. Any Clues what this is relating to?


************** Exception Text **************
Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.RemoteObjectSourceException: An entry with the same key already exists. ---> System.ArgumentException: An entry with the same key already exists.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.SortedList`2.Add(TKey key, TValue value)
at OdeToCode.WebVisualizers.ControlTree.ControlProperties.Add(String propName, Object instance)
at OdeToCode.WebVisualizers.ControlTree.ControlProperties.LoadPropertiesFromInstance(Object instance)
at OdeToCode.WebVisualizers.ControlTree.ControlObjectSource.CopyControl(Control control, ControlProxy controlInfo)
at OdeToCode.WebVisualizers.ControlTree.ControlObjectSource.CopyControl(Control control, ControlProxy controlInfo)
at OdeToCode.WebVisualizers.ControlTree.ControlObjectSource.CopyControl(Control control, ControlProxy controlInfo)
at OdeToCode.WebVisualizers.ControlTree.ControlObjectSource.CopyControl(Control control, ControlProxy controlInfo)
at OdeToCode.WebVisualizers.ControlTree.ControlObjectSource.CopyControl(Control control, ControlProxy controlInfo)
at OdeToCode.WebVisualizers.ControlTree.ControlObjectSource.GetData(Object target, Stream outgoingData)
at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.VisualizerObjectSourceHolder.GetData(Object target, Stream s)
at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.DebugeeHost.GetInitialData(VisualizerObjectSourceHolder sourceHolder, Object input)
--- End of inner exception stack trace ---

# re: Debugging Visualizers in Visual Studio 2005 4/19/2006 8:46 PM Scott Mitchell

Jason - A stab in the dark, but the error looks like it is occurring b/c the visualizer is trying to insert a duplicate key into a sorted list. I assume the key is the ID of the controls. Do you happen to have multiple controls on the page with the same ID?

# re: Debugging Visualizers in Visual Studio 2005 10/2/2008 8:38 AM Mike Paterson

Scott,

I downloaded the code.
It builds without a problem.
But how do I actually instantiate the visualizer?

This tool will be hugely helpful for me and my team if I can get it to work.

Let me know.
I can be reached at Michael.L.Paterson@gmail.com

Thanks,
Mike

Title:  
Name:  
Url:
Protected by Clearscreen.SharpHIPEnter the code you see:
Comments   

My Links

Ads Via DevMavens

Archives

Post Categories

 

I am a Microsoft MVP for ASP.NET.
I am an ASPInsider.
<July 2009>
SMTWTFS
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

Comment Stats

DayTotal% of Total
Sunday 2046.9%
Monday 42314.3%
Tuesday 50116.9%
Wednesday 54518.4%
Thursday 57219.3%
Friday 53618.1%
Saturday 1856.2%
Total 2966100.0%

Hour1Total% of Total
12:00 AM 752.5%
1:00 AM 802.7%
2:00 AM 672.3%
3:00 AM 812.7%
4:00 AM 642.2%
5:00 AM 1234.1%
6:00 AM 1153.9%
7:00 AM 1755.9%
8:00 AM 1876.3%
9:00 AM 1565.3%
10:00 AM 1866.3%
11:00 AM 1926.5%
12:00 PM 1996.7%
1:00 PM 1846.2%
2:00 PM 1675.6%
3:00 PM 1344.5%
4:00 PM 1153.9%
5:00 PM 1063.6%
6:00 PM 993.3%
7:00 PM 1063.6%
8:00 PM 903.0%
9:00 PM 842.8%
10:00 PM 893.0%
11:00 PM 923.1%
Total 2966100.0%

Comments by Blog Entry Date/Time

Day Entry MadeAvg.Total
Sunday 4.91157
Monday 4.92379
Tuesday 4.21471
Wednesday 7.42668
Thursday 6.53666
Friday 5.17450
Saturday 4.73175
Total 5.522966

Hour1 Entry MadeAvg.Total
12:00 AM 5.2937
1:00 AM 1.002
5:00 AM 0.000
7:00 AM 4.0048
8:00 AM 4.29133
9:00 AM 6.04290
10:00 AM 5.83274
11:00 AM 4.36192
12:00 PM 6.44348
1:00 PM 3.14132
2:00 PM 5.04227
3:00 PM 7.97303
4:00 PM 3.8199
5:00 PM 6.00168
6:00 PM 4.56114
7:00 PM 8.95188
8:00 PM 8.58163
9:00 PM 5.00115
10:00 PM 6.31101
11:00 PM 4.5732
Total 5.522966

Learn More About Comment Stats
1 - All times GMT -8...


Blog Stats

Favorite Web Sites

My Books

My MSDN Articles