我喜欢新的JSL调试器的5个理由没错,JMP 10附带了一个全新的JSL调试器。与旧告别,向新问好!当我想知道我在博客文章中可以说些什么时,我开始考虑它如何使我作为JSL脚本编写者的生活更加轻松。这篇文章介绍了一些精彩的功能,随后的文章将放大详细信息。
《 JSL脚本指南》全面介绍了JSL调试器,并提供了一些简单的示例来帮助您入门。同时,这是一些值得期待的事情。
5,有用!
这可能有点苛刻,但是我发现我们以前的JSL调试器功能有限且难以使用,我从未使用过。现在,我发现自己放弃了用Show(),Print()和Write()随意添加代码的旧习惯,而转而使用新的调试器。这样做还有一个好处,就是不向同事发布我的脚本,只是发现我忘了注释或删除几个Show()。
另外,您无需在脚本顶部添加/ * debug step * /即可对其进行调试。您可以单击Debug Script工具栏按钮(
)的脚本-它位于“运行脚本”按钮旁边。或选择“编辑”>“调试脚本”。或者右键单击脚本窗口,然后选择“调试脚本”。或按CONTROL-SHIFT-R(在Macintosh上为COMMAN-SHIFT-R)。简单!
4。它也可以在Macintosh上使用

哦,快乐的一天!现在,我可以在Macintosh和Windows上调试JSL脚本了!调试器在两个平台上都是相同的。相同的功能,相同的功能。我知道我的Macintosh爱好者会对此表示欢迎,因为疲惫的旧调试器甚至在Macintosh上都不可用。
3。调试循环和用户编写的函数
在循环中选择小段代码并逐段运行它们的日子已经过去了(同时尝试不选择导致JSL错误的逗号)。我可以从这里听到欢呼声。通过调试器运行代码时,您可以看到迭代变量的值在每次更改时都会自动更新。您可以使用断点绕过您知道正在工作的块。您可以将条件添加到断点,并一键运行前200次迭代,然后着眼于201处故障的起点英石迭代。
功能调试也更容易。您不再需要分别声明“传递的”变量是什么,然后运行函数的各个部分。您只需运行该函数的脚本并逐步执行即可。调试器会向您显示您传入的变量的所有值以及该函数本地的值。
2。单步执行,进入和退出代码块
您是否已经知道要调用的表达是完美无缺的?单击调试器中的“单步执行”以一键运行表达式,然后在下一个表达式处停止。您确定您的功能出现问题吗?单击“单步执行”以进入函数并在函数内一次运行每个表达式。您是否正在一步一步地通过Include()文件并意识到问题不在这里?单击“跳出”以完成其余脚本的运行,然后返回调试Include()之后的表达式。
1。观察变量
这是旧调试器所做的一件事,但是它很难使用且受限制。变量监视是新调试器中的一种乐趣。每个单个变量的值都会在现有的任何范围内显示-全局,局部(此处为名称空间)。您无需做任何事情:它始终存在。当新变量添加到您的代码中时,它们将被添加到适当的列表中。添加一个新的名称空间,并为其显示一个新列表。
如果编写使用数十个变量的冗长脚本,则这些列表可能会变得不知所措。因此,转到“监视”选项卡。
您可以仅添加要关注的几个变量。如果要在将值添加到特定的JSL列表中时观看,可以下标(例如,可以观看mylist )。您可以在监视列表中进行作用域设置(例如,您可以同时在此处监视:var和global:var)。您可以在监视列表中键入变量名称,但是在调试器的脚本窗格中右键单击变量名称,然后选择“添加监视”,甚至更加容易。敬请关注...
观看此空间,获取有关调试器的更多信息,我将在其中详细讨论特定功能和用例。对特定的调试器主题感兴趣?在评论中提及它,我将在以后的文章中尝试解决。
杜威写道:ÐxcellenntÑost。我会和...杜威写道:
ÐxcellenntÑost。我将处理其中许多
问题。
John Sall对JMP 10写道:[...]John Sall对JMP 10进行了思考写道:
投资于编写脚本,JMP 10在该领域提供了许多新功能。它具有新的JSL调试器,对JMP日志的分屏支持,拖放编辑,改进的外接程序构造以及[...]
梅兰妮·德雷克(Melanie Drake)写道:您是否一一运行脚本,...梅兰妮·德雷克(Melanie Drake)写道:
您是一个一个地运行脚本,启动每个JMP并退出JMP,还是一次启动JMP并运行包含脚本?在第一种情况下(每个脚本一个实例),show()出现在日志中。在第二个中,容器脚本退出JMP,因此您什么也看不到。一位同事建议在每个脚本中使用日志捕获,并将日志捕获另存为文本文件,以供日后查看。我在下面有另一种方法。
错误消息没有太大变化。
我认为,如果将错误的列引用发送到平台,则脚本在那里将失败,并且您将无法进入Is Scriptable(plat)。如果列引用不好,则可以使用Try()跳过整个过程。例如:
Try(plt = bivariate(x(:nonexistent_column),y(:nonexistent_column_2));
请做某事;
//做更多的事情
,//否则,如果以上任何表达式失败,请执行此操作
保存文本文件(“ c:/ error log.txt”,
“ c:\ ben的script.jsl:在第一个双变量情况下出错”,
模式(“追加”)
)
);
请注意,必须先创建文本文件,然后才能附加到文本文件。这样的方法也可能有助于减轻您的第一个问题。
感谢您提出有趣的问题!
Ben写道:快速提问-我通过...运行了许多脚本本写道:
快速问题-我通过命令行运行了一堆脚本。JMP 8或9引入了新的“功能”,通过该功能可以使脚本运行-但不会出现。因此,如果我通过命令行barfs启动的脚本,现在是否会像在6中一样显示出来?在9中,我遇到了一些问题,例如,早上来到一个用“ N col(dtab)-dtab不是数据表引用”打开的JMP窗口,几乎不知道哪个脚本调用了N col(dtab)。我尝试添加“ show(“启动c:\ ben's script.jsl”)”,但这种情况似乎从未出现。
另外,对于调试(仅运行脚本时的默认设置)很有用,JMP是否仍然吐出
“在错误的参数(x)中找不到列”
?
(“ x”有时显示为数字)
有类似的东西
“您在代码行1234中的表“ Bens_target_data_table”中询问了表“ Bens_target_data_table”中的列“ Bens_column_name”,但其中没有“ eval(Bens_column_list_variable)”,但没有此类列”
是一个非常有用的错误。
另外,我不认为这会自动致命,并且经常不向“坏列”抛出错误是有问题的-通常必须在某个地方显示“ catch”语句:
plt =双变量(x(:nonexistent_column),y(:nonexistent_column_2));
请做某事;
如果我只想跳过不良列,则需要
IsScriptable(plt);
反正。
谢谢。
珍妮M写道:你摇滚梅尔!珍妮·M写道:
你摇滚梅尔!
李·克雷顿(Lee Creighton)写道:我很喜欢演示本地变种的演示...李·克赖顿写道:
我喜欢演示在调试器中显示局部变量的演示。