Lua:
Использование отладчика
Как использовать:
Lua не поставляется с встроенным отладчиком, но вы можете использовать внешние, такие как ZeroBrane Studio. Вот небольшой пример того, как вы бы работали с ним:
-- Это простой скрипт Lua с намеренной ошибкой
local function add(a, b)
local result = a + b -- Ой, давайте представим, что мы забыли определить 'b'
return result
end
print(add(10))
Когда вы запускаете это в отладчике, он останавливает выполнение там, где происходят неполадки. Вы увидите что-то вроде этого:
lua: example.lua:3: попытка выполнить арифметическую операцию с nil-значением (локальная 'b')
трассировка стека:
example.lua:3: в функции 'add'
example.lua:7: в основном блоке
[C]: в ?
Вы можете устанавливать точки останова, пошагово просматривать код и подглядывать за значениями переменных, чтобы отследить ошибку, не теряя рассудка.
Подробнее
К сожалению, простота Lua не распространяется на отладку. Но не переживайте, сообщество Lua на вашей стороне. Инструменты вроде ZeroBrane Studio, LuaDec и другие предлагают возможности отладки. Исторически отладчики появились вскоре после того, как первые программы начали “киснуть”, давая разработчикам средства исправления своего кода без слепого ковыряния.
С Lua вы часто полагаетесь на внешние отладчики или встраиваете их в вашу среду разработки. Например, ZeroBrane Studio - это среда разработки, которая полностью интегрирует отладчик Lua. Она позволяет вам пошагово просматривать код, устанавливать точки останова и наблюдать за переменными. С точки зрения реализации, отладчики обычно используют хуки для вставки точек останова и других средств отладки.
Альтернативы? Конечно. Хорошие старые операторы вывода print
, ласково называемые “отладкой printf”, иногда могут справиться с задачей без использования сложных инструментов.
Смотрите также
Чтобы продолжить ваше путешествие по отладке, ознакомьтесь с:
- ZeroBrane Studio: https://studio.zerobrane.com/
- Вики lua-users о отладке кода Lua: http://lua-users.org/wiki/DebuggingLuaCode
- Справочник по библиотеке
debug
в руководстве Lua: https://www.lua.org/manual/5.4/manual.html#6.10