Frage DebugBreak () Äquivalent in C #


In C # gibt es eine Anweisung, die DebugBreak () entspricht. Ich möchte den Debugger aufrufen, wenn eine bestimmte Bedingung erfüllt ist.

Bitte helfen Sie


17
2018-01-19 09:48


Ursprung


Antworten:


Du kannst den ... benutzen Unterbrechung Methode der Debugger Klasse im System.Diagnostics-Namespace:

Debugger.Break();

Jetzt gibt es auch eine andere Möglichkeit, bedingte Breakpoints hinzuzufügen, ohne sich mit dem Hinzufügen von Code zu Ihrem Projekt zu beschäftigen.

Dies funktioniert natürlich nur, wenn Sie Ihr Programm bereits über den Debugger ausführen

Sie können zunächst einen regulären Haltepunkt an der Stelle hinzufügen, an der der Debugger angehalten werden soll, und dann mit der rechten Maustaste auf den roten Punkt für den Haltepunkt klicken:

breakpoint right-click menu

und bearbeiten Sie dann die Bedingung, um Ihre Bedürfnisse zu erfüllen:

breakpoint condition dialog

Dies wird dann mit einem kleinen + in Ihrem Breakpoint-Punkt symbolisiert:

conditional breakpoint


28
2018-01-19 09:51



Bei den anderen Antworten bevorzuge ich Debugger.Launch (). Wenn die Anwendung nicht bereits in einem Debugger ausgeführt wird, ruft Launch () das Debugger-Dialogfeld auf, in dem Sie Visual Studio (oder einen anderen Debugger) an den Prozess anhängen können. Wenn Sie jedoch bereits debuggen, wird es direkt nach dem Aufruf von Debugger.Launch () segeln. Break () hingegen fungiert als Haltepunkt - bricht jedes Mal, wenn dieser Punkt erreicht wird (und ruft den Debugger-Dialog auf, wenn der Prozess nicht angefügt wurde).

Seien Sie sehr vorsichtig, keine der Anweisungen in Ihrem Code zu belassen. Das Senden von Code mit Debugger-Aufrufen an die Produktion kann Ihre Anwendung stoppen oder sehr schwer zum Auffinden von Fehlern führen. (Schlechte Erfahrung letzten Monat)


10
2018-01-19 10:06



            System.Diagnostics.Debugger.Break();

            //Lauches the JIT debug window
            System.Diagnostics.Debugger.Launch();

Dies ist besonders nützlich, wenn Sie einen Dienst debuggen, während Sie das Just In Time-Debugger-Fenster aufrufen, und dann das Visual Studio-Fenster auswählen, um den Dienst zu debuggen


4
2018-01-19 09:53



Könnte sein Debugger.Break

System.Diagnostics.Debugger.Break();

2
2018-01-19 09:50



Dieser Artikel auf MSDN bietet Einblick in genau dieses Problem. http://blogs.msdn.com/b/calvin_hsia/archive/2006/08/25/724572.aspx


1
2018-01-19 10:01