5 Gründe, warum ich den neuen JSL-Debugger liebeRichtig, JMP 10 wird mit einem brandneuen JSL-Debugger ausgeliefert. Verabschieden Sie sich vom Alten und hallo vom Neuen! Als ich mich fragte, was ich in einem Blogbeitrag dazu sagen konnte, dachte ich darüber nach, wie es mein Leben als JSL-Scripter einfacher macht. In diesem Beitrag werden einige wundervolle Funktionen vorgestellt. In den folgenden Beiträgen werden Details näher erläutert.
Das JSL Scripting Guide enthält eine vollständige Beschreibung des JSL-Debugger sowie einige einfache Beispiele, um den Einstieg zu erleichtern. In der Zwischenzeit gibt es ein paar Dinge, auf die man sich freuen kann.
5 Es klappt!
Das mag etwas hart sein, aber ich fand, dass unser früherer JSL-Debugger in seinen Funktionen so eingeschränkt und schmerzhaft war, dass ich ihn nie benutzt habe. Jetzt muss ich meine alten Gewohnheiten aufgeben, meinen Code großzügig mit Show (), Print () und Write () zu bespritzen, und wende mich stattdessen an den neuen Debugger. Das hat den zusätzlichen Vorteil, dass ich mein Skript nicht an Kollegen freigeben kann, nur um herauszufinden, dass ich vergessen habe, mehrere Show () - s auszusprechen oder zu löschen.


Als zusätzlichen Bonus müssen Sie nicht den Debug-Schritt * / zu Ihrem Script hinzufügen, um das Debugging durchzuführen. Sie können auf die Symbolleistenschaltfläche Debug-Skript klicken (
) für Ihr Skript - es befindet sich direkt neben der Schaltfläche Skript ausführen. Oder wählen Sie Bearbeiten> Debug-Skript. Oder klicken Sie mit der rechten Maustaste in das Skriptfenster und wählen Sie Debug-Skript aus. Oder drücken Sie STRG-UMSCHALT-R (BEFEHLSTASTE-UMSCHALT-R unter Macintosh). Einfach!
4 Es ist auch auf dem Macintosh verfügbar

Oh, glücklicher Tag! Ich kann jetzt JSL-Skripte sowohl unter Macintosh als auch unter Windows debuggen! Der Debugger ist auf beiden Plattformen gleich. Gleiche tolle Funktionen, gleiche tolle Funktionalität. Ich weiß, dass meine Macintosh-Enthusiasten dies begrüßen werden, da der müde alte Debugger nicht einmal auf Macintosh verfügbar war.
3. Debuggen von Schleifen und vom Benutzer geschriebenen Funktionen
Die Tage, in denen kleine Code-Teile in Ihren Schleifen ausgewählt und stückweise ausgeführt wurden (während Sie versuchen, das Komma nicht auszuwählen, das zu einem JSL-Fehler geführt hat), sind vorbei. Ich kann den Jubel von hier hören. Wenn Sie Ihren Code durch den Debugger ausführen, können Sie sehen, dass der Wert Ihrer Iterationsvariablen bei jeder Änderung automatisch aktualisiert wird. Sie können Haltepunkte verwenden, um die funktionierenden Brocken zu umgehen. Sie können einem Haltepunkt eine Bedingung hinzufügen und die ersten 200 Iterationen mit einem Klick durchlaufen und sich dann darauf konzentrieren, wo Ihr Problem im 201 beginnt st Iteration.
Das Debuggen Ihrer Funktionen ist auch einfacher. Sie müssen nicht mehr separat deklarieren, was Ihre "übergebenen" Variablen sind, und dann Teile der Funktion ausführen. Sie können das Skript einfach mit der Funktion ausführen und einsteigen. Der Debugger zeigt Ihnen alle Werte der Variablen, die Sie übergeben, und die lokalen Werte der Funktion.
2 In, über und aus Codeblöcken gehen
Wissen Sie schon, dass der Ausdruck, den Sie anrufen, fehlerfrei ist? Klicken Sie im Debugger auf "Schritt über", um den Ausdruck mit einem Klick auszuführen und beim nächsten Ausdruck anzuhalten. Sind Sie sicher, dass in Ihrer Funktion etwas schief läuft? Klicken Sie auf Step Into, um die Funktion einzugeben, und führen Sie jeden Ausdruck einzeln innerhalb der Funktion aus. Sind Sie auf halbem Weg Schritt für Schritt durch eine Include () - Datei und erkennen, dass Ihr Problem nicht hier ist? Klicken Sie auf Step Out, um die Ausführung des restlichen Skripts abzuschließen und zum Debuggen des Ausdrucks zurückzukehren, der auf Include () folgt.
1. Variablen beobachten
Dies war das einzige, was der alte Debugger tat, aber er war schwer zu benutzen und eingeschränkt. Das Beobachten von Variablen ist eine Freude am neuen Debugger. Die Werte jeder einzelnen Variablen werden in jedem vorhandenen Gültigkeitsbereich angezeigt - globale, lokale, hier Namespaces. Sie müssen nichts tun: Es ist immer da. Wenn neue Variablen in Ihren Code eingefügt werden, werden sie der entsprechenden Liste hinzugefügt. Fügen Sie einen neuen Namespace hinzu, und eine neue Liste wird angezeigt.
Wenn Sie lange Skripts schreiben, die Dutzende von Variablen verwenden, können diese Listen überwältigend werden. Wechseln Sie also zur Registerkarte "Watch".
Sie können nur die wenigen Variablen hinzufügen, die Sie im Auge behalten möchten.Wenn Sie beobachten möchten, wie Werte zu einer bestimmten JSL-Liste hinzugefügt werden, können Sie tiefgestellt werden (z. B. mylist) ). Sie können in der Beobachtungsliste einen Bereich festlegen (beispielsweise können Sie hier gleichzeitig beobachten: var und global: var).Sie können Ihren Variablennamen in die Überwachungsliste eingeben. Es ist jedoch noch einfacher, den Variablennamen im Debugger-Skriptfenster mit der rechten Maustaste anzuklicken und "Überwachung hinzufügen" auszuwählen.Bleib dran...
In diesem Bereich finden Sie weitere Beiträge zum Debugger, in denen ich bestimmte Funktionen und Anwendungsfälle ausführlich besprechen werde. Interessiert an einem bestimmten Debugger-Thema? Erwähnen Sie es in den Kommentaren, und ich werde versuchen, es in einem zukünftigen Beitrag anzusprechen.
Dewey hat geschrieben: "xcellennt" ost. Ich werde mich mit ma beschäftigen ... Dewey schrieb:
Ð xcellennt Ñ ost. Ich werde mich mit vielen davon befassen
Probleme auch ..
John Sall bietet Überlegungen zu JMP 10 an: [...] inves ... John Sall bietet Überlegungen zu JMP 10 an schrieb:
Wenn Sie in Skripts investieren, bietet JMP 10 in diesem Bereich viele neue Funktionen. Es verfügt über einen neuen JSL-Debugger, Split-Screen-Unterstützung für das JMP-Protokoll, Drag-and-Drop-Bearbeitung, verbesserte Add-In-Konstruktion und eine [...]
Melanie Drake hat geschrieben: Führen Sie Ihre Skripte nacheinander aus, ... Melanie Drake schrieb:
Führen Sie Ihre Skripts nacheinander aus, starten Sie JMP und beenden Sie JMP für jedes, oder starten Sie JMP einmal und führen Sie Ihre Skripts als Include aus. Im ersten Fall (eine Instanz pro Skript) wird die Show () für mich im Protokoll angezeigt. Im zweiten Schritt wird das Containerskript mit JMP beendet, sodass Sie nie etwas sehen. Ein Kollege schlug vor, in jedem Skript eine Protokollaufnahme zu verwenden und die Protokollaufnahme als Textdatei zu speichern, die Sie später ansehen können. Ich habe unten einen alternativen Ansatz.
Fehlermeldungen haben sich nicht viel geändert.
Ich denke, wenn Sie fehlerhafte Spaltenreferenzen an eine Plattform senden, schlägt Ihr Skript dort fehl, und Sie gelangen nicht zu der Funktion "Skriptfähig" (plat). Sie können Try () verwenden, um das Ganze zu überspringen, wenn Ihre Spaltenverweise schlecht sind. Zum Beispiel:
Try (plt = bivariate (x (: keinexistent_column), y (: keinexistent_column_2));
plt << tu etwas;
// mach mehr Sachen
// Wenn sonst einer der obigen Ausdrücke fehlschlägt, tun Sie dies stattdessen
Textdatei speichern ("c: / error log.txt")
"c: \ ben's script.jsl: Fehler im ersten bivariaten Fall",
Modus ("Anfügen")
)
);
Beachten Sie, dass Sie die Textdatei zuerst erstellen müssen, bevor Sie sie anhängen können. Ein Ansatz wie dieser könnte auch dazu beitragen, Ihr erstes Problem zu mildern.
Danke für Ihre interessanten Fragen!
Ben hat geschrieben: Schnelle Frage - Ich führe eine Reihe von Skripten über ... Ben schrieb:
Schnelle Frage - Ich führe eine Reihe von Skripts über die Befehlszeile aus. In JMP 8 oder 9 wurde eine neue "Funktion" eingeführt, durch die das Skript ausgeführt wird, aber nicht angezeigt wird. Wenn also ein Skript, das ich über die Befehlszeile starte, barfs, wird es jetzt wie in 6 angezeigt? In 9 habe ich Probleme wie morgens in ein JMP-Fenster zu kommen, das mit "N col (dtab) - dtab ist keine Datentabellenreferenz" geöffnet ist, und wenig Ahnung, welches Skript N col (dtab) aufgerufen hat. Ich habe versucht, "show (" beim Starten von c: \ ben's script.jsl ")" hinzuzufügen, aber das erscheint NIEMALS, wenn dies passiert.
Auch nützlich für das Debuggen - Standardeinstellungen beim Ausführen eines Skripts - spuckt JMP immer noch aus
"Spalte nicht in fehlerhaftem Argument (x) gefunden"
?
('x' wird manchmal als Zahl angezeigt)
So etwas zu haben
"Sie haben nach Spalte 'Bens_column_name" aus der Tabelle "Bens_target_data_table" in Codezeile 1234 gefragt, in der Sie' eval (Bens_column_list_variable) 'sagten, aber keine solche Spalte vorhanden ist. "
ist ein viel nützlicherer Fehler.
Ich glaube auch nicht, dass dies automatisch fatal ist, und es ist problematisch, häufig keinen Fehler für "schlechte Spalte" zu werfen. Eine "catch" -Anweisung muss normalerweise irgendwo auftauchen:
plt = bivariate (x (: keinexistent_column), y (: keinexistent_column_2));
plt << tu etwas;
Wenn ich will, dass die schlechten Spalten übersprungen werden, brauche ich eine
IsScriptable (plt);
sowieso.
Vielen Dank.
Jenny M hat geschrieben: Du rockst Mel! Jenny M schrieb:
Sie rocken Mel!
Lee Creighton hat geschrieben: Ich würde gerne eine Demo mit lokalen Variabeln sehen ... Lee Creighton schrieb:
Ich würde gerne eine Demo mit lokalen Variablen im Debugger sehen.