Debug.Assert
显示了一个令人困惑的消息框,但如果condition
为false
,我希望它能够中断。
以下作品,但写作很乏味:
#if DEBUG
if (!condition) Debugger.Break()
#endif
所以我写了以下函数:
public class Util
{
[Conditional("DEBUG")]
public static void Assert(bool condition)
{
if (!condition) Debugger.Break();
}
}
它有效,但它在功能中断,而不是在其呼叫站点。如何使Assert
函数的行为类似于它包含的Break
函数?
答案 0 :(得分:4)
Matze的comment是正确的。使用DebuggerStepThrough
属性设置Assert
方法会设置Assert
方法调用的断点。
测试程序:
[DebuggerStepThrough]
public static void Assert(bool condition)
{
if (!condition) Debugger.Break();
}
static void Main(string[] args)
{
Assert(false); // <-- break point here
Console.ReadKey();
}
请注意,您必须启用Just my code
。转到Options -> Debugging -> Enable Just My Code
。