Отладчик

Эта вкладка позволяет посмотреть состояние переменных в момент выполнения кода. Это очень удобно, когда нужно починить переставший работать скрипт или просто отладить его.

Точка отладки, запущенная из Консоли, и вкладка «Отладчик»

Чтобы воспользоваться отладкой, поставьте в коде инструкцию отладки со следующим синтаксисом: debug(parameter : text). Когда код дойдёт до этой инструкции, на вкладке Отладчик появится запись: содержимое параметра станет её заголовком, а под ним будет показана структура всех доступных в этот момент переменных с их текущими значениями.

Панель Ninext должна быть открыта: при закрытой панели достигнутые точки отладки не фиксируются. А вот вкладке Отладчик не обязательно быть на переднем плане.

Чтобы опробовать примеры с этой страницы, вставьте их в Консоль и выполните: Отладчик сразу покажет их точки отладки. Корзина в правом верхнем углу Отладчика очищает список.

Примечание: любую особо интересующую вас переменную можно добавить прямо в текстовую строку, чтобы сразу увидеть её значение на вкладке «Отладчик», — но следите за тем, чтобы тип был текстовым! (например, 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;

Измерение общей длительности скрипта