DebuggerStepThroughAttribute Class Home
This page is specific to:.NET Framework Version:1.12.03.03.5Silverlight 34.0
.NET Framework Class Library
DebuggerStepThroughAttribute Class

Specifies the DebuggerStepThroughAttribute. This class cannot be inherited.

Namespace:  System.Diagnostics
Assembly:  mscorlib (in mscorlib.dll)
Syntax

'Usage

Dim instance As DebuggerStepThroughAttribute

'Declaration

<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Struct Or AttributeTargets.Constructor Or AttributeTargets.Method, Inherited := False)> _
Public NotInheritable Class DebuggerStepThroughAttribute _
    Inherits Attribute
Remarks

The common language runtime attaches no semantics to this attribute. It is provided for use by source code debuggers. For example, the Visual Studio 2005 debugger does not stop in a method marked with this attribute but does allow a breakpoint to be set in the method.

For more information about using attributes, see Extending Metadata Using Attributes.

Inheritance Hierarchy

System..::.Object
  System..::.Attribute
    System.Diagnostics..::.DebuggerStepThroughAttribute
Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Platforms

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Version Information

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0

XNA Framework

Supported in: 3.0, 2.0, 1.0
See Also

Reference

Community Content

Not sure I get this
Added by:EugenP
So this attribute it allows setting a breakpoint in a method but the debugger will not stop. Does this make sense?
Strange choice of AttributeTargets
Added by:Merak
The attribute only targets, entire classes or structs, and methods.

However properties (which are more likely to be so basic that stepping over them makes most sense) cannot have this attribute.

To apply this to properties, you have to apply it to the specific get or set, eg

publicstring SomeProperty
{
[System.Diagnostics.DebuggerStepThrough]
get
{
string prop = (string)ViewState["Property"];
return (prop == null) ? String.Empty : prop;
}
[System.Diagnostics.DebuggerStepThrough]
set
{
ViewState["Property"] = value;
}
}



No information about what it does?
Added by:Stanley Roark
This line: "Specifies the DebuggerStepThroughAttribute. This class cannot be inherited." is not at all useful. Please give some information on what it does and list some common usage scenarios?

Click here for helpful info
Added by:FX Swede
This blog entry helped me.
http://mark.michaelis.net/Blog/SystemDiagnosticsDebuggerStepThroughAndMoreSystemDiagnosticsNamespaceStuff.aspx
Not sure I get this
Added by:knockNrod

It makes sense if it's a method that does something time-critical or something so annoyingly simple that stepping into it or stepping through it would be most annoying or troublesome, but you still don't want to give up the ability to debug it. As I understand this, you can't step into or through something with this attribute, but you can set a breakpoint which will be hit and pause execution (allowing you to examine variables and such). Not sure if Stepping from said breakpoint would be equivallent to stepping out of the routine or not. Might have to test that, but I never thought it mattered much. Personally, I don't think I'd set this attribute unless and until I'd thoroughly debugged whatever I was adding it to. YMMV.

XSD.EXE Uses This and it Killed Me!!!
Added by:sisdog
I just lost two days of dev time because the XSD.EXE tool generates code that adds this attribute. So, in good format I created a separate *.cs class as a complimental "partial" definition to the classes that XSD.EXE generated for me to keep them pristine and in sync with my raw *.XSD file. But then when I was trying to step through my partial class, this stupid attribute stopped me from stepping into my own partial code.

So why would XSD.EXE do this? Or better yet, why would anyone use this? As a developer why can't you just Step-Over methods while Debugging?
© 2009 Microsoft Corporation. All rights reserved.   Terms of Use | Trademarks | Privacy Statement
Page view tracker
Rate the Lightweight library
x
Lightweight builds on ScriptFree (loband) by adding features you've requested: a SearchBox and default code language selection.
Do you like the SearchBox?
Do you like the tabbed code blocks?
How useful is this topic?
Tell us more.
Thanks
x
You're helping to improve MSDN Online.
Feedback
Switch View
Classic
Lightweight Beta
ScriptFree
Switch View