Haltepunkte
Haltepunkte können auf der gleichnamigen Registerkarte gesetzt werden. Wenn ein Haltepunkt gesetzt wird, wird die Ausführung eines Scripts an der Stelle des Haltepunkts gestoppt. Beachten Sie, dass die Haltepunkte erst durch das Aktualisieren im Baum angezeigt werden. Die Haltepunkte werden nach Zeilennummern angelegt, d.h. z.B. Haltepunkt "29" bedeutet ein Haltepunkt auf der Zeile 29. Klick auf den Haltepunkt springt auf die Zeile wo der Haltepunkt gesetzt wurde. Wenn das Script im Baum (siehe Abbildung unterhalb) selektiert wird, wird die erste Zeile des Scriptes selektiert. Nach Haltepunkte kann auch gesucht werden. Siehe die Beschreibung der Suchfunktion. Sie können dem Haltepunktbereich auch Lesezeichen hinzufügen - weitere Informationen finden Sie im Kapitel Skripteditor - Lesezeichen hinzufügen.
Bedingter Haltepunkt
Ein Haltepunkt kann eine Bedingung verwenden, die zu einem "bool true"-Wert ausgewertet werden muss, damit der Thread für diesen Haltepunkt angehalten wird.
- Eine Bedingung kann eine beliebige CTRL-Anweisung mit boolschem Rückgabewert sein (z. B. "a > 5" oder "(a > 5) && (b < 10)" oder "object.str.isEmpty()" oder "object.func()"), einschließlich Funktionsaufrufen. Es können auch Funktionen der Klasse CTRL aufgerufen werden.
- Die Bedingung läuft im Kontext der Zeile, in der sich der Haltepunkt befindet, und hat daher Zugriff auf alle Variablen, die an dieser Position gültig sind (z.B. verschachtelte lokale Variablen).
-
Eine Bedingung kann auf alle Member der Klasse CTRL zugreifen, unabhängig von deren Zugriffsbeschränkungen (protected, private).
-
Eine Bedingung kann auch Variablenwerte ändern. Zum Beispiel ist "x = 12" nicht nur eine Zuweisung, sondern auch eine Bedingung, da der Rückgabewert immer der Zuweisung entspricht, d.h. 12
Einschränkungen:
Wartende Funktionsaufrufe können nicht verwendet werden (z.B. dpGet(), delay(), etc.).
Die Behandlung von Ausnahmen ist nicht möglich (kein try/catch/finally ist erlaubt)
Eine synchronisierte Behandlung ist nicht möglich.
Code, der in einer Bedingung ausgeführt wird, kann nicht nachverfolgt werden (CTRL_TRACE) und der Haltepunkt wird nicht überprüft. Das bedeutet, dass im Code ein weiterer Haltepunkt gesetzt sein könnte, der nur bei der normalen Ausführung, nicht aber bei der Ausführung während der Bedingungsauswertung getroffen wird.
Trefferzahl
Die Trefferzahl eines Haltepunktes definiert die Anzahl der Treffer, die ein Haltepunkt erzielen muss, bevor er tatsächlich angehalten wird. Wenn ein Haltepunkt auch eine Bedingung enthält, muss die Bedingung wahr sein, um als Treffer gezählt zu werden.
Haltepunkte aktivieren/deaktivieren/löschen
Haltepunkte können jetzt aktiviert, deaktiviert oder gelöscht werden, indem man mit der rechten Maustaste auf einen Haltepunkt im Haltepunkt-Dock-Panel klickt und das angezeigte Kontextmenü verwendet.
Ein Rechtsklick auf einen Haltepunkt im Source-Widget zeigt ebenfalls ein Kontextmenü zum Aktivieren/Deaktivieren des Haltepunktes an. Ein deaktivierter Haltepunkt wird nie getroffen.
Weiter zu einer Zeile
Das Kontextmenü im Quellcode-Widget kann Weiter zu dieser Zeile anzeigen, wenn Sie mit der rechten Maustaste in den Haltepunkt-Bereich klicken, wenn sich das aktuell angezeigte Skript in einem aktuell angehaltenen Thread befindet.
Das Skript befindet sich in einem aktuell angehaltenen Thread. Diese Aktion setzt einen temporären Haltepunkt in dieser Zeile und löscht diesen, sobald er getroffen wird. Beachten Sie:
-
temporäre Haltepunkte können nur in einer Zeile gesetzt werden, in der noch kein anderer Haltepunkt gesetzt wurde
-
temporäre Haltepunkte werden nicht behalten