Lua debugger — отладчик Луа
-
- Posts: 145
- Joined: Thu 04 Oct, 2012 13:53
- Location: Hamburg, DE
- Has thanked: 2 times
- Been thanked: 2 times
Lua debugger — отладчик Луа
Как продолжение 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 и хотел предложить.
Сам к сожалению, ввиду отсутствия времени, в ближайшем будущем не смогу этим заняться, посему в идеи...
Немного погуглив на эту тему пришел к выводу, что в принципе это дело можно осуществить двумя способами:
Способ 1:
Непосредственно из самого скрипта, используюя напр. debug.sethook(hookfunc, 'l').
В данном случае функция hookfunc вызывается перед выполнением каждой строки скрипта содержащей мин. один стэйтмент. В ней можно было бы имплементировать дальнейшую логику, которая бы собирала информацию о среде исполнения и показывала/передавала бы ее дальше.
В моем случае я напр. просто собирал информацию путем debug.getinfo / debug.getlocal, устанавливал в редакторе, если скрипт запущен из него, курсор на выполняемую строку (FarColorer -> Configure -> [X] Cross) и выдавал нужное мне с помощью msgbox(). Но такой подход так же еще не очень удобен, т.к. msgbox() вечно закрывает код и вообще диструктивно вмешивается в работу самого скрипта.
Кроме того такой подход связан с некоторыми неудобствами: А именно, для отладки, код приходится временно модифицировать:
Способ 2:
Непосредственно в плагине LuaMacro? Например добавив, помимо соответствующей логики естественно, новый модус к eval('@myluascript.lua', xxx), где xxx имеет соответствующее значение.
Например открывать отдельное окно за пределами самого фара, или вторую консоль? (возможно ли такое вообще?) Или же общаться посредствам стандартных интерфейсов, дабы не зависеть от конкретной оболочки?
Собственно способ №2 и хотел предложить.
Сам к сожалению, ввиду отсутствия времени, в ближайшем будущем не смогу этим заняться, посему в идеи...
Last edited by EGez on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Дополнен Заголовок Темы
Reason: Дополнен Заголовок Темы
-
- Posts: 6834
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Lua debugger
Сделать дебаггер - это очень серьёзный и долговременный проект. Расширением eval тут не обойтись. Чтобы не изобретать велосипед, следует сначала изучить существующие дебаггеры для Lua.
У меня сейчас на это тоже времени нет.
У меня сейчас на это тоже времени нет.
-
- Posts: 145
- Joined: Thu 04 Oct, 2012 13:53
- Location: Hamburg, DE
- Has thanked: 2 times
- Been thanked: 2 times
Re: Lua debugger
Сие было как небольшой анализ и результирующее оттуда предложение.
С тобой-то и так все ясно, с текущеми-то разработками. Я так полагаю сейчас и смысла нет за него браться, пока все не уляжется. На будущее...
С тобой-то и так все ясно, с текущеми-то разработками. Я так полагаю сейчас и смысла нет за него браться, пока все не уляжется. На будущее...
- John Doe
- Бюрократ
- Posts: 13853
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: Lua debugger
Интересно было бы посмотреть.EGez wrote:В моем случае я напр. просто собирал информацию путем debug.getinfo / debug.getlocal, устанавливал в редакторе, если скрипт запущен из него, курсор на выполняемую строку (FarColorer -> Configure -> [X] Cross) и выдавал нужное мне с помощью msgbox().
- HaRT
- Moderator
- Posts: 10863
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: Lua debugger
Присоединяюсь.Shmuel wrote:Сделать дебаггер - это очень серьёзный и долговременный проект. [...] Чтобы не изобретать велосипед, следует сначала изучить существующие дебаггеры для Lua.
Вроде опыт прикручивания скриптовых отладчиков есть в PowerShell FAR…
И попутно: есть ли сейчас возможность прицепиться к Lua-макросу, выполняющемуся в ФАРе, внешним отладчиком для Lua?
Если нет, насколько сложно добавить?
Фар есть инструмент, а не нянька. © 2009 DrKnS
-
- Posts: 6834
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Lua debugger
Думаю, что такая возможность есть. Надо только найти время.HaRT wrote:И попутно: есть ли сейчас возможность прицепиться к Lua-макросу, выполняющемуся в ФАРе, внешним отладчиком для Lua?
Если нет, насколько сложно добавить?
Желающим попробовать советую в первую очередь ознакомиться с программой ZeroBrane Studio, имеющей remote debugger.
Примечание модератора
Обсуждение ZeroBrane Studio выделено в отдельную тему
-
- Posts: 145
- Joined: Thu 04 Oct, 2012 13:53
- Location: Hamburg, DE
- Has thanked: 2 times
- Been thanked: 2 times
Re: Lua debugger
Пардон, начал тему и пропал, у меня эта пара недель как из жизни выпала, работа...John Doe wrote:Интересно было бы посмотреть.EGez wrote:В моем случае я напр. просто собирал информацию путем debug.getinfo / debug.getlocal, устанавливал в редакторе, если скрипт запущен из него, курсор на выполняемую строку (FarColorer -> Configure -> [X] Cross) и выдавал нужное мне с помощью msgbox().
Вот пример, модуль дебагера: (ESC = step in, OK = отпустить)
И как использовать в скрипте:
Кстати, предложеный способ от paulclinger и этот одного типа... ("Способ 1")
Макрос из редактора запускается так:
Удачи...
- John Doe
- Бюрократ
- Posts: 13853
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: Lua debugger
dbg.lua:50: bad argument #4 to 'format' (number expected, got nil)
P.S.
Что за поле nparams я так и не смог выгуглить
P.S.
Что за поле nparams я так и не смог выгуглить
-
- Posts: 145
- Joined: Thu 04 Oct, 2012 13:53
- Location: Hamburg, DE
- Has thanked: 2 times
- Been thanked: 2 times
Re: Lua debugger
Колличество параметров текущей функции, возможно это от LuaJIT что-то добавлено а в обычном нет?John Doe wrote:dbg.lua:50: bad argument #4 to 'format' (number expected, got nil)
P.S.
Что за поле nparams я так и не смог выгуглить [. . .]
http://www.lua.org/manual/5.1/manual.ht ... ug.getinfo
По идее его можно просто вынуть, разумеется, соответственно поправив строку форматирования...
-
- Posts: 145
- Joined: Thu 04 Oct, 2012 13:53
- Location: Hamburg, DE
- Has thanked: 2 times
- Been thanked: 2 times
Re: Lua debugger
Кстати, тут всего лишь подразумевалось включение режима дебагера, если бы он был реализован в плагине...Shmuel wrote:[. . .] Расширением eval тут не обойтись. [. . .]
EDIT: Очепятки, из метро писал
- John Doe
- Бюрократ
- Posts: 13853
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: Lua debugger
Всего лишь включить можно без расширения eval.
Макрос запускающий скрипт (открытый в редакторе).
Макрос запускающий скрипт (открытый в редакторе).
В обычном нет.Колличество параметров текущей функции, возможно это от LuaJIT что-то добавлено а в обычном нет?
-
- Posts: 145
- Joined: Thu 04 Oct, 2012 13:53
- Location: Hamburg, DE
- Has thanked: 2 times
- Been thanked: 2 times
Lua debugger
Я тут неплохой IDE для Lua нашел.
На базе Eclipse.
Скринкаст:
Только вот с Фаром почему-то проблемы пока, нужно будет еще разобраться...
На базе Eclipse.
- Реальный дебаггер
- Возможность подключиться к уже бегущей программе правда здесь все-таки риквайрить нужно: (зависим от luaSocket)
- Неплохая документация
- Inline help для стандартных API
- ...
Скринкаст:
Только вот с Фаром почему-то проблемы пока, нужно будет еще разобраться...
-
- Posts: 145
- Joined: Thu 04 Oct, 2012 13:53
- Location: Hamburg, DE
- Has thanked: 2 times
- Been thanked: 2 times
Re: Lua debugger
Да, мне эта ссылка знакома, только вот что-то ничего из этого меня не зацепило, скажем так...
Если только среди них другой модуль подобрать попробовать.
Если только среди них другой модуль подобрать попробовать.