Debug-Tracer
In diesem Reiter können Sie den Zustand der Variablen zum Zeitpunkt der Ausführung Ihres Codes untersuchen. Das ist sehr nützlich, um ein nicht mehr funktionierendes Skript zu reparieren oder ganz allgemein während der Fehlersuche.

Um die Debug-Funktion zu nutzen, setzen Sie in Ihren Code eine Debug-Anweisung mit folgender Syntax: debug(parameter : text). Wird der Code abgearbeitet und die Debug-Anweisung erreicht, so entsteht im Reiter Debug-Tracer ein Eintrag: mit dem Inhalt des Parameters als Titel und darunter einer Aufstellung aller zu diesem Zeitpunkt verfügbaren Variablen samt ihren aktuellen Werten.
Das Ninext-Panel muss geöffnet sein: Bei geschlossenem Panel werden erreichte Debug-Punkte nicht erfasst. Der Reiter Debug-Tracer selbst muss dagegen nicht im Vordergrund stehen.
Um die Beispiele dieser Seite auszuprobieren, fügen Sie sie in die Konsole ein und führen sie aus: Der Debug-Tracer zeigt ihre Debug-Punkte sofort an. Der Papierkorb oben rechts im Tracer leert die Liste.
Hinweis: Sie können jede besonders interessante Variable in Ihre Textzeichenfolge einfügen, um ihren Wert sofort im Reiter Debug-Tracer zu sehen – achten Sie aber darauf, dass der Typ Text ist! (z. B. debug("Debug point 1 : " + Variable1); )
Sieht man sich den Reiter genauer an, so erkennt man, dass bei jeder Ausführung der Debug-Anweisung eine neue Zeile entsteht.
Diese Zeile enthält den Namen des Debug-Punktes, also den Text, der der debug-Funktion als Parameter übergeben wurde, zum Beispiel: debug("my debug point").
Am Anfang der Zeile steht außerdem die seit der vorigen Debug-Zeile verstrichene Zeit. Damit lässt sich die Leistung des Codes einschätzen (siehe unten). Die erste Zeile trägt immer den Wert „start“.
Diese Debug-Zeile selbst enthält eine Zeile pro Variable, die an dieser Stelle des Skripts sichtbar ist: die vor der Debug-Anweisung deklarierten Variablen, die Variable einer Schleife und sogar diejenige, deren Deklaration gerade läuft und die dann „void“ ist. Jede Variablenzeile nennt Name, Typ, Wert und einen Ausschnitt des Codes, in dem die Variable deklariert wird.

Aufklappen, kopieren, öffnen
Die Werte werden wie in der Konsole angezeigt:
- eine Liste, ein Datensatz, ein Objekt, ein Verweis oder ein Text, der JSON enthält, klappt mit einem Klick auf seinen Pfeil auf;
- wenn Sie mit der Maus über eine Zeile fahren, erscheint eine Schaltfläche, die ihren Wert kopiert; in der Zeile des Debug-Punktes kopiert sie die gesamte Aufzeichnung;
- ein unterstrichener Wert bezeichnet einen Datensatz: Ein Klick öffnet ihn in Ninox.
Verwendung in Schleifen
Setzen Sie ein debug innerhalb einer Schleife, so sehen Sie den Zustand der Variablen bei jedem Schleifendurchlauf. Ebenso sehen Sie die für jeden Durchlauf benötigte Zeit. Im folgenden Beispiel bleibt die Verzögerung meist unter 1 ms.
let a := select Customer
let d := for i in a do
debug("for each customer");
i.'first name' + " " + i.'last name';
end;
debug("all customers");
d;
Fügt man jedoch eine im Zeitaufwand teure Anweisung hinzu, etwa die Anweisung „select“, so steigt die Zeit zwischen den Durchläufen deutlich an.
let a := select Customer
let d := for i in a do
let e := select Invoice where Customer = i;
debug("for each customer");
i.'first name' + " " + i.'last name' + " " + sum(e.TOTAL);
end;
debug("all customers");
d;
Setzt man vor und nach einem Skriptblock eine Debug-Anweisung, so lässt sich die gesamte Ausführungszeit des Skripts messen:
debug("start of script");
let a := select Customer
let d := for i in a do
i.'first name' + " " + i.'last name';
end;
debug("end of script");
d;
