如何通过IDE调试器

时间:2017-05-25 12:59:25

标签: c# debugging

我有一个属性的类,我需要拦截debuggind评估。

我不知道如何做到这一点。

class Foo
{
    public bool DebugIsAllow { get; set; } = false;
    public string Value
    {
        get
        {
            if (!DebugIsAllow && IsDebugging()) throw new Exception();
            return "ok";
        }
    }
    public bool IsDebugging()
    {
        return ?????
    }

    public void Main()
    {
        var v = Value;
Breakpoint here !!!
        DebugIsAllow = true;
Breakpoint here !!!
    }
}

在第一个断点处,如果我为'v'和'Value'添加间谍,我想在监视窗口中看到:v =“ok”和Value =“Exception”

在第二次破坏时,我想在观察窗口看到:v =“ok”和Value =“ok”

感谢您的帮助。

编辑:

我尝试使用“System.Diagnostics.Debugger.IsAttached”,但调试器始终是附加的。不仅在观察窗口的IDE类属性时。

2 个答案:

答案 0 :(得分:0)

使用[DebuggerDisplay]属性实现自定义显示方案以在调试器中使用。例如,Lazy<T>类使用它来停止调试,导致延迟评估运行。

https://msdn.microsoft.com/en-us/library/x810d419.aspx

答案 1 :(得分:-1)

您可以使用此编译器指令,假设已定义DEBUG常量:

public bool IsDebugging()
{
#if DEBUG
    return true;
#else
    return false;
#endif
}