How can I use debugbreak() in C#?

2019-01-13 20:12发布

问题:

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

回答1:

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();
}


回答2:

Put the following where you need it:

System.Diagnostics.Debugger.Break();


回答3:

http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.break.aspx

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


回答4:

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



回答5:

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