The Side Effects of Debugging Code

by Nick 11. October 2006 07:39

David Kline makes a great point about the side effect of debugging code.  In particular, if you have properties that actually do more than simply returning a value, you can unexpectedly modify the state of the system just by exploring an object in the watch window. 

Visual Studio 2005 supports a number of attributes that can help control how objects are viewed during debugging:

DebuggerDisplay - This controls how the single line summary of the object is rendered when you hover your mouse over an object when in break mode.

DebuggerHidden - Can be used to attribute a method/property that you don't want the debugger to step into when debugging.  Note that you can't place a breakpoint in a method/property with this attribute, nor will this method/property appear in the call stack if you place a breakpoint further down the call stack.

DebuggerStepThrough - This marks code that will appear as "external" code when debugging.  Again you can't place a breakpoint in this code.

DebuggerNonUserCode - Just when you thought there couldn't be any more permutations on what will/will not be stepped through.... This attribute controls whether your code is stepped through when the "Just My Code" option is enabled (see Tools --> Options).

DebuggerTypeProxy - This attibute allows you to redirect the debugger data tip to display a substitute object in place of the object you are hovering over.  This can be great if you want to simplify the way your object is displayed during debugging.

DebuggerVisualizer - Use this attribute if you want a richer display for your object.  For example if you hover over a String object you will notice there is a magnifying glass in the data tip.  Clicking this brings up the String visualizer which is a window where you can view the entire string.  You can write your own visualizer by inheriting from the DialogDebuggerVisualizer class and then attributing your class with the DebuggerVisualizer attribute.

<Shameless plug>Samples of using these attributes is available in Professional Visual Studio 2005</Shameless plug>

 

Tags:

Powered by BlogEngine.NET 2.0.0.36

Automotive Theme by Car Leasing Experts

 

Page List