【发布时间】:2010-09-11 09:06:46
【问题描述】:
语法是什么以及需要导入哪个命名空间/类?如果可能的话,给我示例代码。会有很大帮助的。
【问题讨论】:
标签: c# debugging debugbreak
语法是什么以及需要导入哪个命名空间/类?如果可能的话,给我示例代码。会有很大帮助的。
【问题讨论】:
标签: c# debugging debugbreak
将以下内容放在您需要的地方:
System.Diagnostics.Debugger.Break();
【讨论】:
您可以使用System.Diagnostics.Debugger.Break() 在特定位置进行中断。这在调试服务等情况下会有所帮助。
【讨论】:
#if DEBUG
System.Diagnostics.Debugger.Break();
#endif
【讨论】:
#if DEBUG 的 +1 很棒!开发时非常糟糕。将此代码保留在发布中。
我还想检查是否附加了调试器 - 如果在没有调试器时调用 Debugger.Break,它会提示用户是否要附加一个。根据您想要的行为,您可能希望仅在(或如果没有)已附加一个时才调用 Debugger.Break()
using System.Diagnostics;
//.... in the method:
if( Debugger.IsAttached) //or if(!Debugger.IsAttached)
{
Debugger.Break();
}
【讨论】:
@Philip Rieck 和@John 的答案略有不同。
约翰的...
#if DEBUG
System.Diagnostics.Debugger.Break();
#endif
仅当您使用 DEBUG 条件编译符号集编译时才有效。
菲利普的回答...
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
【讨论】: