除錯追蹤器

這個分頁讓您可以在程式碼執行的當下檢視變數的狀態。無論是要修好一段不再運作的腳本,或只是在除錯階段,都非常有用。

從控制台執行的除錯點,以及除錯追蹤器

若要使用除錯功能,您必須在程式碼中放入一道 debug 指令,語法如下:debug(parameter : text);當程式碼執行到這道 debug 指令時,除錯追蹤器分頁中就會產生一筆項目,以參數的內容為標題,下方則是一份結構,列出當下所有可用的變數及其目前的值。

Ninext 面板必須是開啟的:面板關閉時,執行到的除錯點不會被記錄下來。至於除錯追蹤器分頁,則不必顯示在最前面。

若要試用本頁的範例,請將它們貼到控制台中並執行:除錯追蹤器會立即顯示它們的除錯點。追蹤器右上角的垃圾桶圖示可清空清單。

注意:您可以把任何特別關心的變數串進文字字串中,就能在除錯追蹤器分頁裡立刻看到它的值——但要確認型別是 text!(例如 debug("Debug point 1 : " + Variable1); )

仔細觀察這個分頁就會發現,每執行一次 debug 指令,就會新增一行。

這一行包含除錯點的名稱,也就是傳給 debug 函式的那段文字,例如:debug("my debug point")。

在行首還會顯示距離上一行除錯訊息所經過的時間。這有助於評估程式碼的效能(見下文)。第一行的值一律是「start」。

這行除錯訊息本身包含若干變數行,腳本中此處可見的每個變數各佔一行:在 debug 指令之前宣告的變數、迴圈的變數,甚至是正在宣告中的變數——此時其值為「void」。每一行變數都包含名稱、型別、值,以及宣告該變數處的程式碼片段。

除錯追蹤器中一行的組成

展開、複製、開啟

值的顯示方式與控制台中相同:

  • 清單、記錄、物件、參照,或含有 JSON 的文字,點一下其箭頭即可展開;
  • 滑鼠停在某一行上時,會出現一個複製其值的按鈕;在除錯點那一行上,它會複製整份追蹤記錄;
  • 加上底線的值代表一筆記錄:點一下即可在 Ninox 中開啟它。

在迴圈中使用

把 debug 放進迴圈裡,就能看到迴圈每一次疊代時變數的狀態,也能看到每一次疊代所花的時間。在下面的例子中,間隔大多低於 1 毫秒。

Ninox
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」,就會看到每次疊代之間的時間明顯拉長。

Ninox
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;

迴圈中 select 的執行成本

在一段腳本的前後各放一道 debug 指令,就能測量該段腳本的總執行時間:

Ninox
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;

測量一段腳本的總執行時間