Mark Avenius
Mark Avenius

Reputation: 13947

Can I mark a class as not my code so the debugger steps over it?

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.

Upvotes: 14

Views: 4651

Answers (3)

Mike Nakis
Mike Nakis

Reputation: 61979

If one was to judge by its name, the [DebuggerNonUserCode] attribute should do it, but it does not. (Or it does not work in VS2017 and later.) So, the accepted answer is wrong.

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. (Or it does not work in VS2017 and later.) So, the answer with the 20 upvotes is also wrong.

What does work

... is the [DebuggerHidden] attribute. (Documentation at learn.microsoft.com)

Go figure.

Upvotes: 1

BrokenGlass
BrokenGlass

Reputation: 160862

You are looking for the DebuggerNonUserCode attribute.

Upvotes: 13

Brandon
Brandon

Reputation: 69973

You can use the DebuggerStepThrough attribute to skip over it.

Upvotes: 20

Related Questions