我该如何在C#中使用DebugBreak()函数?

32

语法是什么,需要导入哪个命名空间/类?如果可能的话,请给我一些示例代码。这将会非常有帮助。

5个回答

46

我也喜欢检查调试器是否已经附加 - 如果您在没有调试器的情况下调用Debugger.Break,它会提示用户是否要附加一个。根据您想要的行为,您可能希望仅在已经附加(或未附加)时调用Debugger.Break()

using System.Diagnostics;

//.... in the method:

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

25
将以下内容放在需要的位置:
System.Diagnostics.Debugger.Break();

8

#if DEBUG加一分!如果开发人员在发布版本中保留了这段代码,那就太糟糕了。 - 23W

3

@Philip Rieck 和 @John 的答案略有不同。

John的...

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

只有在编译时设置了DEBUG条件编译符号才能正常工作。

Phillip的答案...

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

这段代码可以在任何调试器上工作,因此也会让任何黑客感到害怕。

另外要注意SecurityException可能会抛出异常,所以不要让这段代码被滥用。

还有一个原因是不要……

如果没有附加调试器,则会询问用户是否要附加调试器。 如果用户选择是,则启动调试器。 如果已附加调试器,则会向调试器发出用户断点事件,并且调试器暂停进程的执行,就像命中了调试器断点一样。

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


3

您可以使用System.Diagnostics.Debugger.Break()在特定位置中断程序。这对于调试服务等情况非常有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接