5 raisons pour lesquelles j'aime le nouveau débogueur JSLEn effet, JMP 10 est livré avec un tout nouveau débogueur JSL. Dites au revoir à l'ancien et bonjour au nouveau! Alors que je me demandais ce que je pouvais dire dans un billet de blog à ce sujet, j'ai commencé à réfléchir aux moyens de faciliter ma vie en tant que scripteur JSL. Cet article présente quelques fonctionnalités merveilleuses, et les articles suivants feront un zoom sur les détails.
Le Guide de script JSL contient une description complète du débogueur JSL, ainsi que quelques exemples simples pour vous aider à démarrer. En attendant, voici certaines choses à espérer.
5 Ça marche!
C’est peut-être un peu dur, mais j’ai trouvé notre précédent débogueur JSL si limité en fonctionnalités et difficile à utiliser que je ne l’avais jamais utilisé. Je me retrouve maintenant en train d'abandonner mes vieilles habitudes consistant à saupoudrer généreusement mon code avec Show () s, Print () s et Write () s et je me tourne plutôt vers le nouveau débogueur. Ce qui présente l’avantage supplémentaire de ne pas diffuser mon script à des collègues uniquement pour découvrir que j’ai oublié de commenter ou de supprimer plusieurs Show () s.
En prime, vous n'avez pas à ajouter / * step debug / / en haut de votre script pour le déboguer. Vous pouvez cliquer sur le bouton de la barre d’outils Script de débogage (
) pour votre script - il est juste à côté du bouton Run Script. Ou sélectionnez Edition> Script de débogage. Ou cliquez avec le bouton droit dans la fenêtre de script et sélectionnez Script de débogage. Ou appuyez sur CONTROL-SHIFT-R (COMMAND-SHIFT-R sur Macintosh). Facile!
4 Il est également disponible sur Macintosh

Oh Happy Day! Je peux maintenant déboguer des scripts JSL sur Macintosh ainsi que Windows! Le débogueur est le même sur les deux plates-formes. Mêmes fonctionnalités, même fonctionnalité. Je sais que mes collègues passionnés de Macintosh l’apprécieront, car le vieux débogueur fatigué n’était même pas disponible sur Macintosh.
3 Boucles de débogage et fonctions écrites par l'utilisateur
L'époque de la sélection de petits morceaux de code dans vos boucles et de leur exécution fragmentée (en essayant de ne pas sélectionner la virgule ayant entraîné une erreur JSL) est révolue. Je peux entendre les acclamations d'ici. Lorsque vous exécutez votre code via le débogueur, vous pouvez voir la valeur de votre variable d'itération automatiquement mise à jour à chaque modification. Vous pouvez utiliser des points d'arrêt pour contourner les blocs dont vous savez qu'ils fonctionnent. Vous pouvez ajouter une condition à un point d'arrêt et exécuter les 200 premières itérations en un clic, puis vous concentrer sur le début de votre problème. st itération.
Déboguer vos fonctions est également plus facile. Vous n'avez plus besoin de déclarer séparément quelles que soient vos variables «passées», puis d'exécuter des parties de la fonction. Vous pouvez simplement exécuter le script à la fonction et y entrer. Le débogueur vous montre toutes les valeurs des variables que vous transmettez et celles qui sont locales à la fonction.
2 Entrer dans, sur et hors des blocs de code
Savez-vous déjà que l'expression que vous appelez est sans faille? Cliquez sur Step Over dans le débogueur pour exécuter l'expression en un clic et vous arrêter à l'expression suivante. Êtes-vous certain que quelque chose ne va pas dans votre fonction? Cliquez sur Pas à pas pour entrer la fonction et exécutez chaque expression une à la fois dans la fonction. Êtes-vous à mi-chemin de la procédure pas à pas dans un fichier Include () et réalisez que votre problème n’est pas là? Cliquez sur Step Out pour terminer l'exécution du reste du script inclus et revenir au débogage de l'expression qui suit la commande Include ().
1. Regarder des variables
C’était la seule chose que faisait l’ancien débogueur, mais c’était difficile à utiliser et limité. L'observation variable est un plaisir dans le nouveau débogueur. Les valeurs de chaque variable sont affichées dans toutes les portées existantes - globale, locale, ici, espaces de noms. Vous n'avez rien à faire: c'est toujours là. Lorsque de nouvelles variables sont ajoutées dans votre code, elles sont ajoutées à la liste appropriée. Ajoutez un nouvel espace de noms et une nouvelle liste apparaît.
Si vous écrivez de longs scripts qui utilisent des dizaines de variables, ces listes peuvent devenir accablantes. Alors retournez à l'onglet Regarder.
Vous pouvez ajouter uniquement les quelques variables que vous souhaitez surveiller.Si vous souhaitez regarder lorsque des valeurs sont ajoutées à une liste JSL particulière, vous pouvez souscrire (par exemple, vous pouvez regarder mylist ). Vous pouvez définir la portée de la liste de surveillance (par exemple, vous pouvez regarder ici: var et global: var en même temps).Vous pouvez taper le nom de votre variable dans la liste de surveillance, mais il est encore plus facile de cliquer avec le bouton droit de la souris sur le nom de la variable dans le volet de script du débogueur et de sélectionner Ajouter une surveillance.Restez à l'écoute...
Surveillez cet espace pour plus de publications sur le débogueur, où je discuterai en détail des fonctionnalités particulières et des cas d'utilisation. Intéressé par un sujet particulier du débogueur? Mentionnez-le dans les commentaires et j'essaierai d'y répondre dans un prochain article.
Dewey a écrit: Ð xcellennt Ñ ost. Je vais avoir affaire à ma ... Dewey a écrit:
Cell xcellennt Ñ ost. Je vais traiter avec beaucoup de ces
questions aussi ..
John Sall propose des réflexions sur JMP 10 a écrit: [...] inves ... John Sall propose des réflexions sur JMP 10 a écrit:
[...] investissant dans l'écriture de scripts, et JMP 10 propose de nombreuses nouvelles fonctionnalités dans ce domaine. Il comporte un nouveau débogueur JSL, une prise en charge de l'écran divisé pour le journal JMP, une édition par glisser-déposer, une construction améliorée des add-in et une [...]
Melanie Drake a écrit: Est-ce que vous exécutez vos scripts un par un, ... Melanie Drake a écrit:
Exécutez-vous vos scripts un par un, en lançant JMP et en quittant JMP pour chacun d’eux, ou lancez-vous JMP une fois et exécutez-vous vos scripts en mode "includes"? Dans le premier cas (une instance par script), show () apparaît dans le journal pour moi. Dans le second cas, le script de conteneur quitte JMP, de sorte que vous ne voyez jamais rien. Un collègue a suggéré d'utiliser une capture de journal dans chaque script et d'enregistrer la capture de journal en tant que fichier texte que vous pourrez consulter ultérieurement. J'ai une approche alternative ci-dessous.
Les messages d'erreur n'ont pas beaucoup changé.
Je pense que si vous envoyez des références de colonne incorrectes à une plate-forme, votre script échouera là et vous n'obtiendrez pas le scriptable Script (plat). Vous pouvez utiliser un Try () pour ignorer le tout si vos références de colonne sont mauvaises. Par exemple:
Try (plt = bivarié (x (: nonexistent_column), y (: nonexistent_column_2));
plt << faire quelque chose;
// faire plus de choses
, // sinon si l'une des expressions ci-dessus échoue, faites ceci à la place
Enregistrer le fichier texte ("c: / error log.txt",
"c: \ ben's script.jsl: erreur dans le premier cas bivarié",
mode ("append")
)
)
Notez que vous devez d'abord créer le fichier texte avant de pouvoir l'ajouter. Une telle approche pourrait également contribuer à atténuer votre premier problème.
Merci pour vos questions intéressantes!
Ben a écrit: Question rapide - Je lance un tas de scripts via ... Ben a écrit:
Question rapide - Je lance un tas de scripts via la ligne de commande. JMP 8 ou 9 a introduit une nouvelle "fonctionnalité" grâce à laquelle le script est exécuté - mais n'apparaît pas. Donc, si un script que je lance via la commande barfs en ligne de commande apparaîtra-t-il maintenant comme il l'a fait dans 6? En 9, j'ai des problèmes, comme venir le matin dans une fenêtre JMP bloquée avec "N col (dtab) - dtab n'est pas une référence de table de données" et une petite idée du script qui appelle N col (dtab). J'ai essayé d'ajouter "show (" en lançant le script.jsl de c: \ ben ")", mais cela ne semble JAMAIS apparaître lorsque cela se produit.
Aussi utile pour le débogage (paramètres par défaut lors de l’exécution d’un script), JMP continue-t-il à cracher
"Colonne introuvable dans le mauvais argument (x)"
?
('x' apparaît parfois sous forme de nombre)
Avoir quelque chose comme
"vous avez demandé la colonne" nom_colonne_Bens "dans la table" table_données_données_Bens "dans la ligne de code 1234 où vous avez indiqué" eval (liste_colonne_variable) ", mais cette colonne n'existe pas"
est une erreur beaucoup plus utile.
De plus, je ne pense pas que cela soit automatiquement fatal, et il est souvent problématique de ne pas renvoyer d'erreur pour "mauvaise colonne" - une déclaration "catch" doit généralement apparaître quelque part:
plt = bivarié (x (: nonexistent_column), y (: nonexistent_column_2));
plt << faire quelque chose;
si je veux que cela saute juste les mauvaises colonnes, je vais avoir besoin d'un
IsScriptable (plt);
en tous cas.
Merci.
Jenny M a écrit: Vous basculez Mel! Jenny M a écrit:
Tu berce Mel!
Lee Creighton a écrit: J'aimerais une démo montrant une variété locale ... Lee Creighton a écrit:
J'aimerais une démonstration montrant des variables locales dans le débogueur.