Перейти к содержанию

Отладка скриптов

Описание окна отладчика

Важно

Перед началом работы с отладчиком скриптов необходимо активировать уровень логирования DEBUG в настройках

В режиме отладки доступны следующие функциональные области:

1. Переменные — окно, в котором отображается список переменных, а также их значения или типы (string, number, userdata и т. д.) во время выполнения отладки. Это окно используется для анализа состояния программы в текущей точке выполнения.
2. Стек вызовов — окно, в котором отображается последовательность вызванных функций в отлаживаемой строке. Каждая строка содержит название функции, номер строки и путь к файлу модуля.
3. Точки останова — окно показывает список установленных точек останова. Для каждой точки указано имя и путь к файлу, номер строки. Кнопка ❌ удаляет все точки останова из скрипта.
4. Панель инструментов:

  • ▶ Продолжить F5 — возобновляет выполнение скрипта.
  • ↷ Шаг вперед F10 — выполняет следующую строку без входа в функцию.
  • ⬇ Шаг внутрь F11 — выполняет следующую строку, переходя внутрь вызываемой функции.
  • ⬆ Шаг наружу Shift+F11 — выполняет выход из текущей функции.
  • ■ Отключиться — разъединяет соединение с сервером.

Строка, выделенная желтым цветом — текущая строка выполнения при пошаговой отладке.
Строка, выделенная красным цветом — точка останова (breakpoint).

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

Во время исполнения скрипта после установки точки, рядом с ней появится жёлтый стрелочный индикатор, который будет свидетельствовать о том, что выполнение скрипта остановлено на данной строке.

Пример работы

Для демонстрации примера работы с отладчиком будет рассмотрен простой скрипт, в котором происходит извлечение значения активного тега counter с помощью функции readValue. Данная функция входит в состав модуля simplight.api.channels.sync, вызываемого в первой строке.

В данном примере значение тега формируется в эмуляторе Modbus с использованием протокола Modbus TCP. Тип значения активного тега Uint16.

readValue_sync.lua
1
2
3
4
5
6
local tagApi = require("simplight.api.channels.sync")

setInterval(function()
    local tag = tagApi.readValue("counter")
    print(tag)
end, 1000)

Перед началом отладки необходимо развернуть проект с данным скриптом на сервер. Затем следует нажать кнопку "Отладчик" в левой панели окна "Редактор скриптов" и кнопку "Подключиться к серверу". После успешного подключения кнопка "Подключиться к серверу" изменит своё название на "Отключиться", что будет свидетельствовать о готовности отладчика.

После установки точки останова в строке 6 выполнение скрипта останавливается после появления жёлтого стрелочного индикатора рядом с точкой останова. В окне "Переменные" отображается значение, полученное тегом во время остановки. В "Стеке вызовов" для данной строки указан только текущий скрипт. В окне "Точки останова" указано название скрипта и номер строки, в которой установлена точка останова.

Если после этого нажать кнопку "Продолжить", то будет выполнен фрагмент кода внутри модуля setInterval. Переменная получит новое значение, и отладчик остановится в той же точке останова.

Если точку останова удалить, то после активации кнопки "Продолжить" сервер будет выполнять скрипт в штатном режиме.

После активации кнопки "Шаг вперед" отладчик перейдет в режим пошаговой отладки и остановится на строке 4 — следующей выполняемой строке за точкой останова. В этой строке происходит извлечение значения тега.

Чтобы перейти к коду функции readValue необходимо 1 раз нажать кнопку "Шаг внутрь",

После этого система автоматически выполнит следующие действия:

  1. Откроет исходный код модуля simplight.api.channels.sync в отдельной вкладке.
  2. Установит курсор на строке модуля, где происходит чтение значения тега функции readValue.
  3. Отобразит название тега в окне "Переменные".
  4. Добавит в стек информацию о новом вызове и местоположении файла модуля sync.lua.

После нажатия кнопки "Шаг вперед" курсор сначала переместится на строку 25, где происходит возврат значения функции, а следующее нажатие вернет отладчик в основной скрипт на строку 5.

Для завершения отладки необходимо нажать кнопку "Остановиться" на панели инструментов или воспользоваться кнопкой "Отключиться", которая позволяет разорвать соединение с сервером и завершить работу отладчика.