1

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

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

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 с официального сайта
http://unknownworlds.com/decoda/download/
Запускаем, устанавливаем, везде просто жмем «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

Куда-то заныкали они свою декоду, факт. И сайт свой все переделывают и переделывают куда-то...
Можете пока скачать с этого сайта дистрибутив Decoda, взятый с сайта когда он там еще был разработчиков.

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

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