mit Watchpoints, bedingten Breakpoints oder "Datenhaltepunkte" lässt sich das Debugging von Schleifen erheblich vereinfachen.
Man kann das Programm erst dann anhalten, wenn es den problematischen Schleifenindex erreicht hat und muss sich nicht durch alle vorhergehenden Iterationen hindurcharbeiten.
Ich habe gerade folgende Vorgehensweise erfolgreich getestet:
- Normalen Breakpoint vor der Schleife anlegen
- Rechtsklick in den Sourcecode "Debug->Datenhaltepunkt..."
- In dem Dialog wird eingetragen (um die Schleife mit der Indexvariablen i bei Index 22 anzuhalten):
Überwachen: i
Bedingung: i=22 - Watchpoint speicher und Programm zum Debuggen starten
- Sobald der in Punkt 1 gesetzte normale Breakpoint erreicht ist, kann man im Fenster "Ansicht->Debuggerfenster->Haltepunkte" den in Punkt 2/3 angelegten Watchpoint erneut aktivieren. Beim speichern wurde er vermutlich auf den Status "Invalid (On)" gesetzt, da der Debugger die Variable i nicht gefunden hatte.
- Das Programm kann jetzt forgesetzt werden; sobald die Variable i den gewünschten Wert (22) angenommen hat, wird das Programm wieder unterbrochen und man kann wieder Schritt für Schritt weiter debuggen.
Einen Weg hatte ich über Breakpoint-Gruppen gefunden; damit muss ich zur Überwachung einer Variablen aber zwei Breakpoints (jeweils vor und nach der Schleife) den Watchpoint ein- bzw. ausschalten. Wirklich effizient arbeiten kann man damit nicht.