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

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

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

Внимание

Перед началом работы с отладчиком скриптов активируйте уровень логирования 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. Переменная получит новое значение, и отладчик снова остановится на строке 6.

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

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

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

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

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

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

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