1

Тема: Отладка Lua-скриптов в QUIK: Decoda

может кому интересно будет
[url]http://www.youtube.com/watch?v=vzlqT89Q8wY[/url]

2 (2013-01-31 00:46:54 отредактировано admin)

Re: Отладка Lua-скриптов в QUIK: Decoda

UPD 16.08.2013: Поправил описание, т.к. теперь Decoda стала free.


Отладка Lua-скриптов в QUIK при помощи отладчика Decoda

Для  Lua есть замечательная IDE со встроенным отладчиком под названием Decoda. Собственно только отладчик нас сейчас из нее и интересует. На данный момент Decoda полностью бесплатна, кроме того полностью открыт исходный код.

Важно: Отладка Lua-скриптов при помощи Decoda возможна только в терминале QUIK версии 6.5.1.19 и старше. В версиях младше указанной отладка не работает.

Установка Decoda

Скачиваем инсталлятор по ссылке Download Decoda.exe с официального сайта
[url]http://unknownworlds.com/decoda/download/[/url]
Запускаем, устанавливаем, везде просто жмем «Next» или «Ok».

Отладка при помощи Decoda

Для успешной отладки важно соблюдать определенную последовательность действий, иначе 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
  1. Запускаем Quik.
    Добавляем отлаживаемый скрипт: Таблицы -> Lua -> Доступные скрипты -> Добавить
    Скрипт пока не запускаем на выполнение!

  2. Запускаем Decoda.
    Выбираем в меню: Debug -> Processes...
    В открывшемся окне выбираем процесс info.exe и нажимаем «Attach»
    В окне «Output» в Decoda видим информацию о подключении к процессу.
    В Decoda идем в меню File -> Open...  и выбираем наш файл.
    Поставим точку останова (Break-point) в той строчке, начиная с которой мы хотим посмотреть выполнение программы по шагам. Для этого напротив этой строчки кликаем мышью в серой области

  3. Возвращаемся в Quik и запускаем наш скрипт

Тут же происходит остановка на указанной нами строчке (видно по желтой стрелке). В это время терминал QUIK «подвисает», могут наблюдаться некорректности обновления информации в его окнах, но это не страшно, это естественный результат работы под отладчиком.

Для перемещения по коду используем клавиши:

  • F5 – продолжить выполнение до следующей точки остановки

  • F10 – один шаг без входа внутрь встречающихся функций

  • F11 – один шаг со входом внутрь всех встречающихся функций

Там, где мы остановились, у нас уже существует переменная t и ее значение можно посмотреть. Для этого нужно просто сделать двойной клик мыши на пустой строке в окне Watch и указать там имя нашей переменной t.

Как видим, при первой остановке в t содержится пустая таблица.
Последовательно нажимая F10 для последовательного выполнения программы построчно, мы можем видеть, как изменяются значения переменных в программе. Кроме того, мы можем добавлять переменные в окно Watch простым перетягиванием их мышкой из исходного кода, как я поступил с переменной i в ролике ниже.

https://quik2dde.ru/static-img/32/10-decoda-quik.gif


Есть еще немного другой способ открыть исходный код в отладчике: если скрипт у нас «не одноразовый», т.е. содержит цикл ожидания внутри main(), то можно после подключения Decoda к Quik сначала запустить скрипт на выполнение, после чего в окне Decoda появятся выполняемые файлы, текст которых можно открыть двойным кликом.

Разумеется, отлаживать можно более сложные скрипты, в том числе останавливаясь внутри функции main().

3

Re: Отладка Lua-скриптов в QUIK: Decoda

с последней версии декоды работают брейки, но аттач к процессу квика иногда глючит и приходится его перезапускать

4

Re: Отладка Lua-скриптов в QUIK: Decoda

Начиная с версии QUIK 6.4 qlua.dll показывает наружу функции API Lua. Это как раз требовалось для отладки с Декодой. Просто это у них этот момент был не очевидно было в FAQ написано.
Месяца два назад когда я сайт смотрел то цены на нее были такие:
- коммерческая лицензия почти 500 $
- для компаний с годовым доходом менее 100 000 $ можно купить полнофункциональную версию за 50$.

насчет зависаний. Декода внедряется в отлаживаемый процесс и если она зависает, то лечится это только рестартом процесса и декоды.
А вообще это самый удобный и функциональный отладчик для Lua, на мой взгляд

5

Re: Отладка Lua-скриптов в QUIK: Decoda

что то не получается скачать

6

Re: Отладка Lua-скриптов в QUIK: Decoda

Куда-то заныкали они свою декоду, факт. И сайт свой все переделывают и переделывают куда-то...
Можете пока [url=https://quik2dde.ru/static-img/32/Decoda.exe]скачать с этого сайта дистрибутив Decoda[/url], взятый с сайта когда он там еще был разработчиков.

7

Re: Отладка Lua-скриптов в QUIK: Decoda

Decoda теперь open-source.
Но у меня что-то не работает. При коннекте процесса говорит: "Error: The process could not be opened".

8

Re: Отладка Lua-скриптов в QUIK: Decoda

У кого нибудь Decoda в Windows 10 нормально запускается? У меня выкидывает ошибку:

Ошибка при запуске приложения (0xc000007b). Для выхода из приложения нажмите кнопку "ОК"

Уже и от админа запускал и в настройках совместимости разные версии винды для декоды подставлял - все одно и тоже,
В Windows 7  помню Decoda запускалась нормально, но сносить 10ку и возвращатся в 7ку неохота блин

Re: Отладка Lua-скриптов в QUIK: Decoda

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

после этого тестовый пример заработал

10

Re: Отладка Lua-скриптов в QUIK: Decoda

Basilisk_Roko пишет:
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,

Basilisk_Roko пишет:
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 - все равно неработает, у кого либо была такая проблема с брейпоинтами и решилась ли?

11

Re: Отладка Lua-скриптов в QUIK: Decoda

admin пишет:

Куда-то заныкали они свою декоду, факт. И сайт свой все переделывают и переделывают куда-то...
Можете пока [url=https://quik2dde.ru/static-img/32/Decoda.exe]скачать с этого сайта дистрибутив Decoda[/url], взятый с сайта когда он там еще был разработчиков.

Спасибо большое - Decoda по вашей ссылке стала на 10-ку х64 без "танцев с бубном"!!

12

Re: Отладка Lua-скриптов в QUIK: Decoda

извращенцы какие-то писали. не догадались сделать возможность штатной загрузки этой LuaInject через require("luainject") какой-нибудь. не было бы проблем с правами. можно попробовать допилить.