So fügen Sie einen bedingten breakpoint in Visual C++
Möchte ich hinzufügen, dass eine Haltepunkt-Bedingung, um meinen code in VC++ Express 2005, so dass der Haltepunkt nur auslöst, wenn eine lokale variable entspricht einem angegebenen Kriterien. z.B.
bool my_test(UIDList test_list) {
foo(test_list);
bar(test_list); //I have a breakpoint here, but only want it to trigger if test_list.Length() > 0
print(test_list);
}
Mit der rechten Maustaste auf mein Haltepunkt und ausgewählt " - Zustand..." ich habe einen dialog, der angezeigt wird, zu tun, was ich will, aber alles, was ich versuche, die Eingabe in das Textfeld die Ergebnisse in die folgende Fehlermeldung:
Nicht in der Lage zu bewerten, den Haltepunkt
Zustand: CX0052: Fehler: Mitglied
Funktion nicht vorhanden
Ich habe versucht, die Hilfe-Dokumentation, aber ich konnte nicht finden meine Antwort. Ich bin der Hoffnung, jemand erlebt in VC++ könnten in der Lage sein zu zeigen Sie mich in die richtige Richtung...
Habe ich zuvor versucht, aktualisieren auf eine neuere version von VC++ Express, aber das Projekt nicht importieren sauber. Aufgrund der Komplexität des Projekts und meine aktuelle Zeit-Skalen, also ich kann nicht erwägen, wie eine Lösung an dieser Stelle.
Du musst angemeldet sein, um einen Kommentar abzugeben.
verwenden Sie die DebugBreak (); - Funktion:
Oder können Sie sich immer mit assert(expression)
VS hat einige micro-Auswertung-Motoren - variable überwachungsfenster, Direktfenster, Pause, Bedingungen etc. Ich konnte nie finden, eine anständige Dokumentation auf Sie. Soweit ich sagen kann, Sie sind wählerisch über Methoden, die Sie bereit sind, zu nennen, aber Sie sind auch unempfindlich gegen Zugangsbeschränkungen.
So kann man wohl formulieren Sie Ihre Bedingung aus
etwas wie
(oder was auch immer Ihr eigenes Länge var ist).
(EDIT) Gerade gefunden dieser msdn-Seite erklären, was Ausdrücke der debugger kann und nicht umgehen kann. Also erstmal, in der Tat -
Und zweitens, meine Vermutung über den Fehler, zu bewerten, 'Length()' - wahrscheinlich war es inlined:
Den Bedingungen, die in einem Haltepunkt kann keine Methoden aufrufen, soweit ich weiß. Also, was Sie tun müssen, ist zu berechnen, die Länge, bevor die hand. So etwas wie dieses.
Setzen eines bedingten Haltepunkts auf den Wert der ich hier, und Sie sollten in Ordnung sein.