Wie setze ich bedingte Haltepunkte in Visual Studio?

133

Gibt es eine einfache Möglichkeit, bedingte Haltepunkte in Visual Studio festzulegen?

Wenn ich einen Haltepunkt nur erreichen möchte, wenn der Wert einer Variablen zu etwas wird, wie kann ich das tun?

MrClan
quelle
11
Beachten Sie, dass die Express Edition diese Funktionalität nicht bietet.
Alexei Levenkov
1
Ich benutze Express 2015 und es hat die Fähigkeit für bedingte Haltepunkte
mark.monteiro
1
Die Community-Ausgabe von 2017 hat auch bedingte Haltepunkte
PentiumPro200

Antworten:

174

Stellen Sie wie gewohnt einen Haltepunkt ein. Klicken Sie mit der rechten Maustaste darauf. Klicken Sie auf Bedingung.

Jeff
quelle
1
In VS 2015 müssen Sie mit der Maus über den Haltepunkt fahren und auf das Zahnradsymbol klicken, um die Bedingungen
festzulegen
Sie meinen, Rechtsklick, Bedingung festlegen, Fehler "Bedingung für einen Haltepunkt fehlgeschlagen" erhalten, nicht wahr?
Toby Caulk
1
Die Antwort sollte auch eine Syntax für bedingte Anweisungen oder einen informativen Link enthalten.
Andrew
50

Wenn Sie die Express Edition verwenden, können Sie Folgendes versuchen:

#if DEBUG
    if( fooVariable == true )
        System.Diagnostics.Debugger.Break();
#endif

Die if-Anweisung stellt sicher, dass in der Version kein Build-Breakepoint vorhanden ist.

Panako
quelle
3
Dies hat einen großen Vorteil in Bezug auf Leistung und Zeitersparnis. Ich habe jedes potenzielle int 'id' in einem meiner Programme (nur etwa 3,5 Millionen) durchlaufen, was nur ein paar Sekunden dauert. Ich habe versucht, den bedingten Haltepunkt zu verwenden, aber da er sich nicht in einem bedingten Zweig befand, verlangsamte er die Ausführungsgeschwindigkeit bis zu dem Punkt, an dem ich nach einigen Minuten die Debug-Sitzung einfach beenden würde. Die Verwendung des kompilierten Haltepunkts machte es sofort.
Goldfisch-Sandwich
35

Visual Studio bietet viele Optionen für bedingte Haltepunkte:

Um eines dieser Sie einzustellen

  1. Setzen Sie einen Haltepunkt.
  2. Klicken Sie mit der rechten Maustaste auf den Haltepunkt, und wählen Sie im Popup-Menü eine Option aus, die zu Ihnen passt.

Diese Optionen sind wie folgt:

  • Sie können eine Bedingung basierend auf einem von Ihnen angegebenen Code-Ausdruck festlegen (wählen Sie Bedingung aus dem Popup-Menü). Sie können beispielsweise diesen foo == 8oder einen anderen Ausdruck angeben .
  • Sie können Haltepunkte auslösen lassen, nachdem sie eine bestimmte Anzahl von Malen getroffen wurden. (Wählen Sie Hit Count aus dem Popup-Menü). Dies ist eine unterhaltsame Option, mit der Sie spielen können, da Sie nicht nur eine bestimmte Trefferzahl überschreiten müssen, sondern auch Optionen für einige andere Szenarien haben. Ich überlasse es Ihnen, die Möglichkeiten zu erkunden.
  • Sie können Filter für die Prozess-ID, die Thread-ID und den Computernamen festlegen (wählen Sie Filter aus dem Einblendmenü).
C Johnson
quelle
16

Nur eine andere Möglichkeit, dies zu tun (oder wenn Sie Express verwenden), fügen Sie die Bedingung im Code hinzu:

if(yourCondition)
{
    System.Diagnostics.Debugger.Break();
}
Ignacio Soler Garcia
quelle
9
  1. Setzen Sie den Haltepunkt auf der Linie
  2. Rechter Schlag auf ROTEN Ball
  3. Wählen Sie einen bedingten Haltepunkt
  4. Einrichtungsbedingung
Tigran
quelle
8

Das Schreiben des tatsächlichen Zustands kann der schwierige Teil sein, daher neige ich dazu

  1. Legen Sie einen regulären Haltepunkt fest .
  2. Führen Sie den Code aus, bis der Haltepunkt zum ersten Mal erreicht wird.
  3. Verwenden Sie das Sofortfenster (Debug> Windows> Sofort), um Ihren Ausdruck zu testen .
  4. Klicken Sie mit der rechten Maustaste auf den Haltepunkt, klicken Sie auf Bedingung und fügen Sie Ihren Ausdruck ein .

Vorteile der Verwendung des Direktfensters:

  • Es hat IntelliSense .
  • Sie können sicher sein, dass sich die Variablen im Ausdruck im Gültigkeitsbereich befinden, wenn der Ausdruck ausgewertet wird.
  • Sie können sicher sein, dass Ihr Ausdruck wahr oder falsch zurückgibt .

Dieses Beispiel wird unterbrochen, wenn sich der Code auf eine Tabelle mit dem Namen "Einstellung" bezieht:

table.GetTableName().Contains("Setting")
Andy Joiner
quelle
5

Erstellen Sie wie gewohnt einen Haltepunkt, klicken Sie mit der rechten Maustaste auf den roten Punkt und wählen Sie "Bedingung".

Brandon Moretz
quelle
4
  1. Stellen Sie wie gewohnt einen Haltepunkt ein
  2. Klicken Sie mit der rechten Maustaste auf den Haltepunkt und wählen Sie Bedingung
  3. Sie sehen ein Dialogfeld mit der Aufschrift "Haltepunktbedingung".
  4. Geben Sie eine Bedingung in das Feld ein, z. B. "i == 5".

Der Haltepunkt wird nur getroffen, wenn ich 5 bin.

user423119
quelle
4
  1. Stellen Sie wie gewohnt einen Haltepunkt ein.
  2. Klicken Sie mit der rechten Maustaste auf die Haltepunktmarkierung
  3. Klicken Sie auf "Bedingung ..."
  4. Schreiben Sie eine Bedingung, Sie können Variablennamen verwenden
  5. Wählen Sie entweder "Ist wahr" oder "Hat sich geändert"
Casey
quelle
4

In Visual Studio 6.0

Alt+ F9!!!

Vorac
quelle
1
-1) Dies funktioniert nicht in VS 2012 2) Diese Frage hat bereits viele andere (bessere) Antworten und 3) wen interessiert VS 6.0 (veröffentlicht 1998)? 4) Auch wenn sich jemand für VS 6 interessiert, ist die Frage mit .Net gekennzeichnet, das bis zur nächsten Version von VS (Visual Studio .Net)
Tim Medora am
7
Nun, die anderen Antworten funktionieren unter VS 6.0 nicht. Also habe ich eine Lösung gepostet.
Vorac
1

Die Stellen , breakpointwie Sie normalerweise tun, klicken Sie rechts den Haltepunkt und wählen Sie condionOption und setzt Ihren Zustand.

Feuerpanda
quelle
1

Erstellen Sie einen Haltepunkt für bedingte Funktionen:

  1. Klicken Sie im Fenster Haltepunkte auf Neu, um einen neuen Haltepunkt zu erstellen.

  2. Geben Sie auf der Registerkarte Funktion für Funktion umkehren ein. Geben Sie 1 für Zeile, 1 für Zeichen und dann Sprache auf Basis ein.

  3. Klicken Sie auf Bedingung und stellen Sie sicher, dass das Kontrollkästchen Bedingung aktiviert ist. Geben Sie instr.length > 0für Bedingung ein, stellen Sie sicher, dass die Option wahr ist ausgewählt ist, und klicken Sie dann auf OK.

  4. Klicken Sie im Dialogfeld Neuer Haltepunkt auf OK.

  5. Klicken Sie im Debug-Menü auf Start.

JAiro
quelle
0

Wenn Sie von Google stammen, ist diese Antwort möglicherweise genau das, wonach Sie suchen.

  1. Klicken Sie auf Debug> New BreakPoint> Function Breakpoint Geben Sie hier die Bildbeschreibung ein

  2. Wählen Sie dort den bedingten Haltepunkt.

T.Todua
quelle