14

I have a utility class that has been thoroughly tested, and I do not want the VS debugger to step into any of its methods. I think I have heard of a way to mark something as not my code so that the Just My Code debugger setting causes the debugger to step over these method calls, but for the life of me I cannot recall what the class attribute is (nor can I successfully Google for it).

I know that I could separate this class into its own assembly and build it in release mode to alleviate the issue, but I would like to step into some of the assembly (and I would like to keep this class where it is).

Is this possible, or was I dreaming up this option?

Update

I did some testing with the two options (DebuggerStepThrough and DebuggerNonUserCode), and I found that DebuggerNonUserCode behaves exactly the same as the framework when having Just My Code enabled / disabled. The DebuggerStepThrough attribute always causes the debugger to skip the section marked with the attribute. For consistency's sake, I went with DebuggerNonUserCode.

Mark Avenius
  • 13,679
  • 6
  • 42
  • 50
  • Press F10 to step over a method. Problem solved. – Ed S. Feb 09 '11 at 22:16
  • @Ed: I know this, but I would rather not have to switch between F10 and F11 as I am debugging (unless I specifically want to). I would like the same behavior as I get with the framework when `Just My Code` is on. – Mark Avenius Feb 09 '11 at 22:17
  • 1
    Yeah, that's a fair point. However, I left it as a comment (as opposed to an answer) for just that reason. – Ed S. Feb 09 '11 at 23:29

3 Answers3

20

You can use the DebuggerStepThrough attribute to skip over it.

Brandon
  • 68,708
  • 30
  • 194
  • 223
  • I thought DebuggerStepThrough is for methods only. –  Feb 09 '11 at 22:20
  • @Jan: If you look at the `AttributeUsage` flags, it applies to `Class`, `Struct`, `Constructor` and `Method`. `DebuggerNonUserCode` includes `Property` as well. – Jeff Mercado Feb 09 '11 at 22:26
  • Jeff: Yeah, it looks like you're right. I was misreading the Msdn docs. –  Feb 09 '11 at 22:56
13

You are looking for the DebuggerNonUserCode attribute.

BrokenGlass
  • 158,293
  • 28
  • 286
  • 335
  • While this may work, this is not it's intended use. From the MSDN _"When the debugger encounters this attribute when stepping through user code, the user experience is to not see the designer provided code and to step to the next user-supplied code statement."_ Use `DebuggerStepThrough` instead. – Matt Klein Sep 13 '16 at 14:13
0

If one was to judge by its name, the [DebuggerNonUserCode] attribute should do it, but it does not. So, the accepted answer is wrong, or at least it does not work for me in VS2017.

Judging by its name, the [DebuggerStepThrough] attribute was never intended to do what the question is asking for, and it comes as no surprise that it doesn't. So, the answer with the 20 upvotes is also wrong, or at least it does not work for me in VS2017.

What does work for me

is the [DebuggerHidden] attribute.

Go figure.

Mike Nakis
  • 56,297
  • 11
  • 110
  • 142