DebugBreak() equivalent in C#

前端 未结 4 1128
情书的邮戳
情书的邮戳 2020-12-16 10:42

In C# is there any statement equivalent to DebugBreak()? I want to invoke the debugger when ever a particular condition is met.

相关标签:
4条回答
  • 2020-12-16 11:21

    You can use the Break method of the Debugger class, in the System.Diagnostics namespace:

    Debugger.Break();
    

    Now, there's also a different way you can add conditional breakpoints, without mucking about with adding code to your project.

    This of course only works when already running your program through the debugger

    What you can do is first add a regular breakpoint at the location where you want your debugger to stop, then right-click the red dot for the breakpoint:

    breakpoint right-click menu

    and then edit the condition to fit your needs:

    breakpoint condition dialog

    This will then be symbolized with a small + inside your breakpoint dot:

    conditional breakpoint

    0 讨论(0)
  • 2020-12-16 11:21
    System.Diagnostics.Debugger.Break();
    
    //Lauches the JIT debug window
    System.Diagnostics.Debugger.Launch();
    

    This is particularly useful when debugging a service as you get the Just In Time debugger window and can then select the visual studio window to debug the service in.

    0 讨论(0)
  • 2020-12-16 11:22

    Concerning the other answers, I prefer using Debugger.Launch().

    If the application is not already running in a debugger, Launch() will call up the debugger dialog allowing you to attach Visual Studio (or another debugger) to the process. However, if you are already debugging, it will sail right past the Debugger.Launch() call. Break(), on the other hand, will act as a breakpoint - breaking every time it hits that point (and invoking the debugger dialog if the process has not been attached).

    Be VERY careful not to leave either statement in your code. Sending code with Debugger calls out to production can halt your application or create very hard to track down errors (bad experience last month).

    0 讨论(0)
  • 2020-12-16 11:22

    Maybe Debugger.Break

    System.Diagnostics.Debugger.Break();
    
    0 讨论(0)
提交回复
热议问题