C# 我如何包装调试器。很好地断开?
C# 我如何包装调试器。很好地断开?,c#,.net,debugging,C#,.net,Debugging,Debug.Assert显示了一个令人困惑的消息框,但如果条件为false,我希望它只是中断 以下内容很有用,但写起来很枯燥: #if DEBUG if (!condition) Debugger.Break() #endif 因此,我编写了以下函数: public class Util { [Conditional("DEBUG")] public static void Assert(bool condition) { if (!condit
Debug.Assert
显示了一个令人困惑的消息框,但如果条件
为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
函数一样工作?是正确的。用属性修饰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();
}
[DebuggerStepThrough]
公共静态无效断言(布尔条件)
{
if(!condition)Debugger.Break();
}
静态void Main(字符串[]参数)
{
Assert(false);//调试->仅启用我的代码
您可以尝试使用DebuggerStepThrough
属性标记该方法:可能需要打开选项->调试->仅启用我的代码。@Ripple:可能就是这样!我已经打开了它。这就成功了。将它添加到您的答案中,以便我可以标记它。