Click to Rate and Give Feedback

  Switch on low bandwidth view
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
.NET Framework Class Library
DebuggerStepThroughAttribute Class

Specifies the DebuggerStepThroughAttribute. This class cannot be inherited.

Namespace:  System.Diagnostics
Assembly:  mscorlib (in mscorlib.dll)
Visual Basic (Declaration)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Struct Or AttributeTargets.Constructor Or AttributeTargets.Method, Inherited := False)> _
Public NotInheritable Class DebuggerStepThroughAttribute _
    Inherits Attribute
Visual Basic (Usage)
Dim instance As DebuggerStepThroughAttribute
C#
[SerializableAttribute]
[ComVisibleAttribute(true)]
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Constructor|AttributeTargets.Method, Inherited = false)]
public sealed class DebuggerStepThroughAttribute : Attribute
Visual C++
[SerializableAttribute]
[ComVisibleAttribute(true)]
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Struct|AttributeTargets::Constructor|AttributeTargets::Method, Inherited = false)]
public ref class DebuggerStepThroughAttribute sealed : public Attribute
JScript
public final class DebuggerStepThroughAttribute extends Attribute

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.

System..::.Object
  System..::.Attribute
    System.Diagnostics..::.DebuggerStepThroughAttribute
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

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.

.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
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Not sure I get this      EugenP   |   Edit   |   Show History
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      Merak   |   Edit   |   Show History
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?      lukevenediger ... Stanley Roark   |   Edit   |   Show History
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      FX Swede   |   Edit   |   Show History
Not sure I get this      knockNrod   |   Edit   |   Show History

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.

Tags What's this?: Add a tag
Flag as ContentBug
Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker