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 - це IDE, яке повністю інтегрує дебагер 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