调试 Jmp 应用程序有一些技巧吗?
我想这样做的默认方法是这样的:
使用Jmp调试器,添加断点,让应用程序代码运行并停在断点处,然后一步步检查发生了什么......
当我必须调试非应用程序 JSL 代码时,我喜欢它能够随时自由地运行脚本中的任何代码。
例如,删除报告窗口的模式设置,创建报告窗口,然后运行 jsl 文件中另一个位置的一些代码行。
对于来自 Application Builder 的应用程序也可以这样做吗?
1) 如何在App Builder中启用嵌入式日志?

2)为了调试手动生成的应用程序,我发现
myApp = JMP App();
(myApp << Get Namespace) << Show Contents;
从应用程序生成器运行应用程序时,我没有句柄我的应用程序我可以用它来与应用程序交谈。
是否有一些命令可以获取当前应用程序的名称空间并“渗透”代码:
((current report() << get App() ) << get Namespace()) << include Namespace in HERE
这样我就可以从应用程序复制代码片段并直接在脚本窗口中运行它们 - 直接访问正在运行的应用程序的命名空间?
3) 如果我在 JSL 代码中出错,JSL edotor 会警告我或显示错误消息,帮助我找到错误并纠正它。
如果我打开应用程序的源脚本并犯了一个小错误,当我运行代码时 Jmp 将崩溃<<编辑或者<<运行
有没有机会改变源代码,减少对我的扣分的惩罚? 在我敢于运行脚本之前,是否有可以使用的预检查例程?
实际上对于包含的脚本来说也是一样的 - 是否可以手动执行包含的脚本中的代码 - 可以访问主脚本的 HERE 命名空间?
主要脚本:
Names Default to HERE(1);
::myNamespace = localHERE(); //*)
temp =5;
include ("script_inc.jsl");包含的脚本:
///////////////////////////
// to be able to manually execute code in this file, which accesses variables of the main file,
// you need direct access to the namespace of the main file. To get this access, execute:
///////////////////////////
access Namespace(::myNamespace) // *)
Show(temp);
*)(显然)这不起作用
此屏幕截图显示了“问题” - 当包含在主脚本中时, script_B 知道这里主脚本的命名空间(左侧窗口的日志)。
但单独执行时,script_B有它自己的这里命名空间。
它就像设计的那样:
提高效率和可重复性的基本脚本:少做多做 (2019-US-TUT-290)
...但是它使得无法直接从 script_B 运行单行进行调试。
-> 如何链接命名空间以允许我调试 script_B 。