Prache
Prache

Reputation: 543

How can I use DebugBreak() in C#?

What is the syntax and which namespace/class needs to be imported? Give me sample code if possible. It would be of great help.

Upvotes: 32

Views: 32842

Answers (5)

Quintin Robinson
Quintin Robinson

Reputation: 82335

You can use System.Diagnostics.Debugger.Break() to break in a specific place. This can help in situations like debugging a service.

Upvotes: 3

CAD bloke
CAD bloke

Reputation: 8798

The answers from @Philip Rieck and @John are subtly different.

John's ...

#if DEBUG
  System.Diagnostics.Debugger.Break();
#endif

only works if you compiled with the DEBUG conditional compilation symbol set.

Phillip's answer ...

if( Debugger.IsAttached) //or if(!Debugger.IsAttached)
{
  Debugger.Break();
}

will work for any debugger so you will give any hackers a bit of a fright too.

Also take note of SecurityException it can throw so don't let that code out into the wild.

Another reason no to ...

If no debugger is attached, users are asked if they want to attach a debugger. If users say yes, the debugger is started. If a debugger is attached, the debugger is signaled with a user breakpoint event, and the debugger suspends execution of the process just as if a debugger breakpoint had been hit.

from https://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.break(v=vs.110).aspx

Upvotes: 3

Philip Rieck
Philip Rieck

Reputation: 32568

I also like to check to see if the debugger is attached - if you call Debugger.Break when there is no debugger, it will prompt the user if they want to attach one. Depending on the behavior you want, you may want to call Debugger.Break() only if (or if not) one is already attached

using System.Diagnostics;

//.... in the method:

if( Debugger.IsAttached) //or if(!Debugger.IsAttached)
{
  Debugger.Break();
}

Upvotes: 47

MagicKat
MagicKat

Reputation: 9821

Put the following where you need it:

System.Diagnostics.Debugger.Break();

Upvotes: 25

Related Questions