How can I use debugbreak() in C#?

岁酱吖の 提交于 2019-11-27 19:40:19

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

Put the following where you need it:

System.Diagnostics.Debugger.Break();

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

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

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

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!