Тема: Отладка Lua-скриптов в QUIK: Decoda
может кому интересно будет
[url]http://www.youtube.com/watch?v=vzlqT89Q8wY[/url]
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
QUIK -> DDE → Lua: учебники, общие вопросы → Отладка Lua-скриптов в QUIK: Decoda
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
может кому интересно будет
[url]http://www.youtube.com/watch?v=vzlqT89Q8wY[/url]
UPD 16.08.2013: Поправил описание, т.к. теперь Decoda стала free.
Для Lua есть замечательная IDE со встроенным отладчиком под названием Decoda. Собственно только отладчик нас сейчас из нее и интересует. На данный момент Decoda полностью бесплатна, кроме того полностью открыт исходный код.
Важно: Отладка Lua-скриптов при помощи Decoda возможна только в терминале QUIK версии 6.5.1.19 и старше. В версиях младше указанной отладка не работает.
Скачиваем инсталлятор по ссылке Download Decoda.exe с официального сайта
[url]http://unknownworlds.com/decoda/download/[/url]
Запускаем, устанавливаем, везде просто жмем «Next» или «Ok».
Для успешной отладки важно соблюдать определенную последовательность действий, иначе QUIK виснет или вываливается с ошибкой.
Возьмем какой-нибудь простой скрипт для пробы, я сохранил его в файл test-decoda.lua в папке D:\LuaTest\.
t = {}
t["one"] = "data one"
t["two"] = "data two"
for i = 1, 3 do
message(tostring(i), 1)
end
function main()
end
Запускаем Quik.
Добавляем отлаживаемый скрипт: Таблицы -> Lua -> Доступные скрипты -> Добавить
Скрипт пока не запускаем на выполнение!
Запускаем Decoda.
Выбираем в меню: Debug -> Processes...
В открывшемся окне выбираем процесс info.exe и нажимаем «Attach»
В окне «Output» в Decoda видим информацию о подключении к процессу.
В Decoda идем в меню File -> Open... и выбираем наш файл.
Поставим точку останова (Break-point) в той строчке, начиная с которой мы хотим посмотреть выполнение программы по шагам. Для этого напротив этой строчки кликаем мышью в серой области
Возвращаемся в Quik и запускаем наш скрипт
Тут же происходит остановка на указанной нами строчке (видно по желтой стрелке). В это время терминал QUIK «подвисает», могут наблюдаться некорректности обновления информации в его окнах, но это не страшно, это естественный результат работы под отладчиком.
Для перемещения по коду используем клавиши:
F5 – продолжить выполнение до следующей точки остановки
F10 – один шаг без входа внутрь встречающихся функций
F11 – один шаг со входом внутрь всех встречающихся функций
Там, где мы остановились, у нас уже существует переменная t и ее значение можно посмотреть. Для этого нужно просто сделать двойной клик мыши на пустой строке в окне Watch и указать там имя нашей переменной t.
Как видим, при первой остановке в t содержится пустая таблица.
Последовательно нажимая F10 для последовательного выполнения программы построчно, мы можем видеть, как изменяются значения переменных в программе. Кроме того, мы можем добавлять переменные в окно Watch простым перетягиванием их мышкой из исходного кода, как я поступил с переменной i в ролике ниже.
Есть еще немного другой способ открыть исходный код в отладчике: если скрипт у нас «не одноразовый», т.е. содержит цикл ожидания внутри main(), то можно после подключения Decoda к Quik сначала запустить скрипт на выполнение, после чего в окне Decoda появятся выполняемые файлы, текст которых можно открыть двойным кликом.
Разумеется, отлаживать можно более сложные скрипты, в том числе останавливаясь внутри функции main().
с последней версии декоды работают брейки, но аттач к процессу квика иногда глючит и приходится его перезапускать
Начиная с версии QUIK 6.4 qlua.dll показывает наружу функции API Lua. Это как раз требовалось для отладки с Декодой. Просто это у них этот момент был не очевидно было в FAQ написано.
Месяца два назад когда я сайт смотрел то цены на нее были такие:
- коммерческая лицензия почти 500 $
- для компаний с годовым доходом менее 100 000 $ можно купить полнофункциональную версию за 50$.
насчет зависаний. Декода внедряется в отлаживаемый процесс и если она зависает, то лечится это только рестартом процесса и декоды.
А вообще это самый удобный и функциональный отладчик для Lua, на мой взгляд
что то не получается скачать
Куда-то заныкали они свою декоду, факт. И сайт свой все переделывают и переделывают куда-то...
Можете пока [url=https://quik2dde.ru/static-img/32/Decoda.exe]скачать с этого сайта дистрибутив Decoda[/url], взятый с сайта когда он там еще был разработчиков.
Decoda теперь open-source.
Но у меня что-то не работает. При коннекте процесса говорит: "Error: The process could not be opened".
У кого нибудь Decoda в Windows 10 нормально запускается? У меня выкидывает ошибку:
Ошибка при запуске приложения (0xc000007b). Для выхода из приложения нажмите кнопку "ОК"
Уже и от админа запускал и в настройках совместимости разные версии винды для декоды подставлял - все одно и тоже,
В Windows 7 помню Decoda запускалась нормально, но сносить 10ку и возвращатся в 7ку неохота блин
Ошибка при запуске приложения (0xc000007b). Для выхода из приложения нажмите кнопку "ОК"
ставил на виртуалку windows 7. можно сказать чистая машина. получал данную ошибку. заработала со следующими шагами
после установки Decoda с оффсайта нужно еще поставить:
Распространяемые пакеты Visual C++ для Visual Studio 2013 для x86
Microsoft Windows SDK for Windows 7 and .NET Framework 4
при этом необходимо запускать QUIK и Decoda от имени администратора, иначе при attach получал сообщение о невозможности загрузить LuaInject.dll
после этого тестовый пример заработал
Nordman пишет:Ошибка при запуске приложения (0xc000007b). Для выхода из приложения нажмите кнопку "ОК"
ставил на виртуалку windows 7. можно сказать чистая машина. получал данную ошибку. заработала со следующими шагами
после установки Decoda с оффсайта нужно еще поставить:
Распространяемые пакеты Visual C++ для Visual Studio 2013 для x86
Microsoft Windows SDK for Windows 7 and .NET Framework 4
при этом необходимо запускать QUIK и Decoda от имени администратора, иначе при attach получал сообщение о невозможности загрузить LuaInject.dllпосле этого тестовый пример заработал
С этим разобрался почти сразу же - да для работы Decoda необходим VС2013x86,
Nordman пишет:Ошибка при запуске приложения (0xc000007b). Для выхода из приложения нажмите кнопку "ОК"
Microsoft Windows SDK for Windows 7 and .NET Framework 4
при этом необходимо запускать QUIK и Decoda от имени администратора, иначе при attach получал сообщение о невозможности загрузить LuaInject.dll
после этого тестовый пример заработал
И без этого Decoda норм работает, без всяких SDK и Фреймворков, кроме тех что уже установлены в системе при установке, есс-но, и запуск с правами админа необязателен, что декоды что квика,
Но теперь другая проблема - Брейкпоинты не работают,запустил квик, запустил декоду (или наоборот все равно не работает), приаттачил декоду к квику, загрузил скрипт в декоду и квик, выставил брейкпоинт в скрипте в декоде, запускаю скрипт в квике - брейкпоинт не срабатывает, иногда впрочем срабатывают, причем один раз, сразу после запуска скрипта в квике в первый раз, после возобновления скрипта из декоды брейкпоинт уже больше не срабатывает, даже если и скрипт через него проходит много раз, пробовал из запуск декоды и квика от админа - все равно не работает, пробовал и в Win7 и в Win10 (64х разрядные) со всеми установленными патчами обновлениями фреймворками и библиотеками VC2... x86 x32 - все равно неработает, у кого либо была такая проблема с брейпоинтами и решилась ли?
Куда-то заныкали они свою декоду, факт. И сайт свой все переделывают и переделывают куда-то...
Можете пока [url=https://quik2dde.ru/static-img/32/Decoda.exe]скачать с этого сайта дистрибутив Decoda[/url], взятый с сайта когда он там еще был разработчиков.
Спасибо большое - Decoda по вашей ссылке стала на 10-ку х64 без "танцев с бубном"!!
извращенцы какие-то писали. не догадались сделать возможность штатной загрузки этой LuaInject через require("luainject") какой-нибудь. не было бы проблем с правами. можно попробовать допилить.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
QUIK -> DDE → Lua: учебники, общие вопросы → Отладка Lua-скриптов в QUIK: Decoda
Форум работает на PunBB, при поддержке Informer Technologies, Inc