调试跟踪器
这个标签页让您可以在代码执行时查看变量的状态。无论是修复一个不再正常工作的脚本,还是单纯处于调试阶段,它都非常有用。

要使用调试功能,您需要在代码中插入一条 debug 指令,语法如下:debug(parameter : text);当代码运行到该 debug 指令时,调试跟踪器标签页中就会生成一个条目,以该参数的内容作为标题,下方则是当时所有可用变量及其当前值的结构。
Ninext 面板必须处于打开状态:面板关闭时,到达的调试点不会被记录。而调试跟踪器标签页本身不必显示在最前面。
要试用本页的示例,请将它们粘贴到控制台中并运行:调试跟踪器会立即显示其中的调试点。跟踪器右上角的垃圾桶图标可清空列表。
提示:您可以把任何特别关注的变量拼进文本字符串中,以便在调试跟踪器标签页中立即看到它的值——但要确保类型是文本!(例如 debug("Debug point 1 : " + Variable1); )
仔细观察该标签页可以发现,每执行一次 debug 指令,就会新增一行。
这一行包含调试点的名称,也就是作为参数传给 debug 函数的文本,例如:debug("my debug point")。
行首还会显示距离上一条调试行所经过的时间。这有助于评估代码的性能(见下文)。第一行的值始终为“start”。
这条调试行本身包含若干变量行,脚本中此处可见的每个变量各占一行:debug 指令之前声明的变量、循环变量,甚至包括正在声明中的变量,此时它的值为“void”。每个变量行包含名称、类型、值,以及声明该变量处的一小段代码。

展开、复制、打开
值的显示方式与控制台中相同:
- 列表、记录、对象、引用或包含 JSON 的文本,点击其箭头即可展开;
- 鼠标悬停在某一行上时会出现一个复制其值的按钮;在调试点所在的行上,它会复制整条跟踪记录;
- 带下划线的值表示一条记录:点击即可在 Ninox 中打开它。
在循环中的用法
把 debug 放在循环内部,可以查看循环每一轮迭代时变量的状态。您还能看到每轮迭代所花的时间。在下面的例子中,间隔时间大多低于 1 毫秒。
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;
但如果我们加入一条执行开销较大的指令,例如“select”指令,就会看到每轮迭代之间的时间显著增加。
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;
在一段脚本的前后各放一条 debug 指令,就可以测量该脚本的总执行时间:
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;
