Page 1 of 2

Lua debugger — отладчик Луа

Posted: Fri 08 Mar, 2013 18:50
by EGez
Как продолжение Lua Explorer подумывал о возможности по настоящему дебагить исполняемый в среде Far скрипт.

Немного погуглив на эту тему пришел к выводу, что в принципе это дело можно осуществить двумя способами:

Способ 1:
Непосредственно из самого скрипта, используюя напр. debug.sethook(hookfunc, 'l').
В данном случае функция hookfunc вызывается перед выполнением каждой строки скрипта содержащей мин. один стэйтмент. В ней можно было бы имплементировать дальнейшую логику, которая бы собирала информацию о среде исполнения и показывала/передавала бы ее дальше.

В моем случае я напр. просто собирал информацию путем debug.getinfo / debug.getlocal, устанавливал в редакторе, если скрипт запущен из него, курсор на выполняемую строку (FarColorer -> Configure -> [X] Cross) и выдавал нужное мне с помощью msgbox(). Но такой подход так же еще не очень удобен, т.к. msgbox() вечно закрывает код и вообще диструктивно вмешивается в работу самого скрипта.

Кроме того такой подход связан с некоторыми неудобствами: А именно, для отладки, код приходится временно модифицировать:




Способ 2:
Непосредственно в плагине LuaMacro? Например добавив, помимо соответствующей логики естественно, новый модус к eval('@myluascript.lua', xxx), где xxx имеет соответствующее значение.
Например открывать отдельное окно за пределами самого фара, или вторую консоль? (возможно ли такое вообще?) Или же общаться посредствам стандартных интерфейсов, дабы не зависеть от конкретной оболочки?


Собственно способ №2 и хотел предложить.

Сам к сожалению, ввиду отсутствия времени, в ближайшем будущем не смогу этим заняться, посему в идеи...

Re: Lua debugger

Posted: Fri 08 Mar, 2013 19:17
by Shmuel
Сделать дебаггер - это очень серьёзный и долговременный проект. Расширением eval тут не обойтись. Чтобы не изобретать велосипед, следует сначала изучить существующие дебаггеры для Lua.

У меня сейчас на это тоже времени нет.

Re: Lua debugger

Posted: Sat 09 Mar, 2013 00:32
by EGez
Сие было как небольшой анализ и результирующее оттуда предложение.
С тобой-то и так все ясно, ;) с текущеми-то разработками. Я так полагаю сейчас и смысла нет за него браться, пока все не уляжется. На будущее...

Re: Lua debugger

Posted: Sat 09 Mar, 2013 10:37
by John Doe
EGez wrote:В моем случае я напр. просто собирал информацию путем debug.getinfo / debug.getlocal, устанавливал в редакторе, если скрипт запущен из него, курсор на выполняемую строку (FarColorer -> Configure -> [X] Cross) и выдавал нужное мне с помощью msgbox().
Интересно было бы посмотреть.

Re: Lua debugger

Posted: Sun 10 Mar, 2013 15:45
by HaRT
Shmuel wrote:Сделать дебаггер - это очень серьёзный и долговременный проект. [...] Чтобы не изобретать велосипед, следует сначала изучить существующие дебаггеры для Lua.
Присоединяюсь.
Вроде опыт прикручивания скриптовых отладчиков есть в PowerShell FAR

И попутно: есть ли сейчас возможность прицепиться к Lua-макросу, выполняющемуся в ФАРе, внешним отладчиком для Lua?
Если нет, насколько сложно добавить?

Re: Lua debugger

Posted: Sun 10 Mar, 2013 16:27
by Shmuel
HaRT wrote:И попутно: есть ли сейчас возможность прицепиться к Lua-макросу, выполняющемуся в ФАРе, внешним отладчиком для Lua?
Если нет, насколько сложно добавить?
Думаю, что такая возможность есть. Надо только найти время.
Желающим попробовать советую в первую очередь ознакомиться с программой ZeroBrane Studio, имеющей remote debugger.

Примечание модератора
Обсуждение ZeroBrane Studio выделено в отдельную тему

Re: Lua debugger

Posted: Fri 22 Mar, 2013 14:44
by EGez
John Doe wrote:
EGez wrote:В моем случае я напр. просто собирал информацию путем debug.getinfo / debug.getlocal, устанавливал в редакторе, если скрипт запущен из него, курсор на выполняемую строку (FarColorer -> Configure -> [X] Cross) и выдавал нужное мне с помощью msgbox().
Интересно было бы посмотреть.
Пардон, начал тему и пропал, у меня эта пара недель как из жизни выпала, работа...

Вот пример, модуль дебагера: (ESC = step in, OK = отпустить)


И как использовать в скрипте:


Кстати, предложеный способ от paulclinger и этот одного типа... ("Способ 1")

Макрос из редактора запускается так:


Удачи...

Re: Lua debugger

Posted: Fri 22 Mar, 2013 15:17
by John Doe
dbg.lua:50: bad argument #4 to 'format' (number expected, got nil)

P.S.
Что за поле nparams я так и не смог выгуглить

Re: Lua debugger

Posted: Sun 24 Mar, 2013 02:13
by EGez
John Doe wrote:dbg.lua:50: bad argument #4 to 'format' (number expected, got nil)

P.S.
Что за поле nparams я так и не смог выгуглить [. . .]
Колличество параметров текущей функции, возможно это от LuaJIT что-то добавлено а в обычном нет?
http://www.lua.org/manual/5.1/manual.ht ... ug.getinfo



По идее его можно просто вынуть, разумеется, соответственно поправив строку форматирования...

Re: Lua debugger

Posted: Thu 28 Mar, 2013 09:38
by EGez
Shmuel wrote:[. . .] Расширением eval тут не обойтись. [. . .]
Кстати, тут всего лишь подразумевалось включение режима дебагера, если бы он был реализован в плагине...

EDIT: Очепятки, из метро писал ;)

Re: Lua debugger

Posted: Thu 28 Mar, 2013 11:31
by John Doe
Всего лишь включить можно без расширения eval.
Макрос запускающий скрипт (открытый в редакторе).
Колличество параметров текущей функции, возможно это от LuaJIT что-то добавлено а в обычном нет?
В обычном нет.

Lua debugger

Posted: Sun 15 Dec, 2013 17:56
by EGez
Я тут неплохой IDE для Lua нашел.

На базе Eclipse.
  • Реальный дебаггер
  • Возможность подключиться к уже бегущей программе правда здесь все-таки риквайрить нужно: (зависим от luaSocket)
    1. require("debugger")()
    2.  
    3. local function main()
    4.     print('Вот такая вот загогулина...')
    5. end
    6.  
    7. main()
  • Неплохая документация
  • Inline help для стандартных API
  • ...
http://www.eclipse.org/koneki/ldt/

Скринкаст:

Только вот с Фаром почему-то проблемы пока, нужно будет еще разобраться...

Re: Lua debugger

Posted: Sun 15 Dec, 2013 19:58
by Shmuel
Вот здесь перечислено много дебаггеров для Lua.

Re: Lua debugger

Posted: Mon 16 Dec, 2013 16:51
by EGez
Да, мне эта ссылка знакома, только вот что-то ничего из этого меня не зацепило, скажем так...

Если только среди них другой модуль подобрать попробовать.

Re: Lua debugger

Posted: Mon 16 Dec, 2013 16:59
by Shmuel
Помимо того, что вы указали выше, ZeroBrane Studio и Decoda являются солидным выбором. ZBS активно разрабатывается, сегодня вышла очередная версия.