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

Здесь обсуждается всё, что касается макросов.
EGez
Posts: 144
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

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

Post 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 и хотел предложить.

Сам к сожалению, ввиду отсутствия времени, в ближайшем будущем не смогу этим заняться, посему в идеи...
Last edited by EGez on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Дополнен Заголовок Темы

Shmuel
Posts: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

Re: Lua debugger

Post by Shmuel »

Сделать дебаггер - это очень серьёзный и долговременный проект. Расширением eval тут не обойтись. Чтобы не изобретать велосипед, следует сначала изучить существующие дебаггеры для Lua.

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

EGez
Posts: 144
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

Re: Lua debugger

Post by EGez »

Сие было как небольшой анализ и результирующее оттуда предложение.
С тобой-то и так все ясно, ;) с текущеми-то разработками. Я так полагаю сейчас и смысла нет за него браться, пока все не уляжется. На будущее...

User avatar
John Doe
Бюрократ
Posts: 12595
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 259 times

Re: Lua debugger

Post by John Doe »

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

User avatar
HaRT
Moderator
Posts: 9230
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 91 times
Been thanked: 195 times

Re: Lua debugger

Post by HaRT »

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

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

Shmuel
Posts: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

Re: Lua debugger

Post by Shmuel »

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

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

EGez
Posts: 144
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

Re: Lua debugger

Post by EGez »

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

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


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


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

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


Удачи...

User avatar
John Doe
Бюрократ
Posts: 12595
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 259 times

Re: Lua debugger

Post by John Doe »

dbg.lua:50: bad argument #4 to 'format' (number expected, got nil)

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

EGez
Posts: 144
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

Re: Lua debugger

Post 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



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

EGez
Posts: 144
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

Re: Lua debugger

Post by EGez »

Shmuel wrote:[. . .] Расширением eval тут не обойтись. [. . .]
Кстати, тут всего лишь подразумевалось включение режима дебагера, если бы он был реализован в плагине...

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

User avatar
John Doe
Бюрократ
Posts: 12595
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 259 times

Re: Lua debugger

Post by John Doe »

Всего лишь включить можно без расширения eval.
Макрос запускающий скрипт (открытый в редакторе).
Колличество параметров текущей функции, возможно это от LuaJIT что-то добавлено а в обычном нет?
В обычном нет.

EGez
Posts: 144
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

Lua debugger

Post 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/

Скринкаст:

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

Shmuel
Posts: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

Re: Lua debugger

Post by Shmuel »

Вот здесь перечислено много дебаггеров для Lua.

EGez
Posts: 144
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

Re: Lua debugger

Post by EGez »

Да, мне эта ссылка знакома, только вот что-то ничего из этого меня не зацепило, скажем так...

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

Shmuel
Posts: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

Re: Lua debugger

Post by Shmuel »

Помимо того, что вы указали выше, ZeroBrane Studio и Decoda являются солидным выбором. ZBS активно разрабатывается, сегодня вышла очередная версия.

Post Reply

Return to “Обсуждение макросов”