【问题标题】:How can I use DebugBreak() in C#?如何在 C# 中使用 DebugBreak()?
【发布时间】:2010-09-11 09:06:46
【问题描述】:

语法是什么以及需要导入哪个命名空间/类?如果可能的话,给我示例代码。会有很大帮助的。

【问题讨论】:

    标签: c# debugging debugbreak


    【解决方案1】:

    将以下内容放在您需要的地方:

    System.Diagnostics.Debugger.Break();
    

    【讨论】:

      【解决方案2】:

      您可以使用System.Diagnostics.Debugger.Break() 在特定位置进行中断。这在调试服务等情况下会有所帮助。

      【讨论】:

        【解决方案3】:

        【讨论】:

        • #if DEBUG 的 +1 很棒!开发时非常糟糕。将此代码保留在发布中。
        【解决方案4】:

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

        using System.Diagnostics;
        
        //.... in the method:
        
        if( Debugger.IsAttached) //or if(!Debugger.IsAttached)
        {
          Debugger.Break();
        }
        

        【讨论】:

          【解决方案5】:

          @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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-11-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多