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

要使用调试功能,您需要在代码中插入一条 debug 指令,语法如下:debug(parameter : text);当代码运行到该 debug 指令时,调试跟踪器视图中就会生成一个条目,以该参数的内容作为标题,下方则是当时所有可用变量及其当前值的结构。
提示:您可以把任何特别关注的变量拼进文本字符串中,以便在调试跟踪器窗口中立即看到它的值——但要确保类型是文本!(例如 debug("Debug point 1 : " + Variable1); )
仔细观察调试窗口可以发现,每执行一次 debug 指令,就会新增一行。
这一行包含调试点的名称,也就是作为参数传给 debug 函数的文本,例如:debug("my debug point")。
行首还会显示距离上一条调试行所经过的时间。这有助于评估代码的性能(见上文)。第一行的值始终为“start”。
这条调试行本身包含若干变量行,数量等于该 debug 指令之前脚本中声明的变量数。每个变量行包含名称、类型、值,以及声明该变量处的一小段代码。
在循环中的用法
把 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;

