Zer0Galaxy 2 187 Опубликовано: 2 января, 2017 У многих начинающих (да и у достаточно опытных) программистов часто случаются ситуации, когда программа вот уже вроде написана, запускается и работает, только работает не совсем так, как хотелось бы. Встроенные средства отладки языка Lua, и без того скудные, в варианте для OpenComputers отсутствуют вовсе. А так иногда охота посмотреть, по какой же ветке прошел if и чему равняется переменная в тот или иной момент выполнения программы. Можно, конечно, наставить тестовых принтов, но начиная с сегодняшнего дня вы так делать больше не будете, ибо теперь у нас есть полноценный отладчик. Как же заполучить это чудо на свой жесткий диск? Первым делом устанавливаем GUI-библиотеку forms, если конечно вы этого по каким-то причинам до сих пор не сделали: pastebin get iKzRve2g lib/forms.lua Вторым делом качаем сам отладчик: pastebin get X48P31Gj bin/debugger.lua Вот собственно и вся установка. Для запуска какого либо lua-файла в отладчике просто пишем его имя после команды debugger, например, так: debugger nod.lua Если отлаживаемый файл будет загружен без ошибок, вы должны увидеть примерно такой интерфейс: Экран отладчика разделен на три неравных части. - Верхняя светло-голубая строка – это меню команд, при помощи которых будет происходить отладка. Чтобы выполнить ту или иную команду, необходимо кликнуть по ней мышью или нажать соответствующую функциональную клавишу. - Синее окно – окно отладчика, в котором можно наблюдать отлаживаемый код и другую полезную информацию. - Нижнее зеленое окно – окно просмотра переменных. В нем можно наблюдать текущие значения переменных. Запуск отладки может быть осуществлен одним из трех способов. Самый медленный, но самый надежный способ – пошаговая отладка. Выполните команду «Шаг». В окне отладчика одна из строк будет подсвечена зеленым цветом. Это исполняемая строка программы, т.е. строка, которая будет выполнена на следующем шаге. Таким образом, раз за разом выполняя команду «Шаг», можно проследить последовательность выполнения программного кода. Режим работы отладчика «RUN/STOP» и номер исполняемой строки можно наблюдать в левом нижнем углу окна отладчика. Если же вы желаете начать отладку не с самого начала программы, а с какого либо участка, переместите курсор (выделен светло-синим цветом) в начало участка и выполните команду «До курсора». Для перемещения курсора прокрутите код программы при помощи колесика мыши и кликните на нужную строку. Альтернативным способом перемещения курсора являются кнопки «Вверх» и «Вниз». Позиция курсора отображается в правом нижнем углу окна отладчика. И наконец, третий способ запуска программы – команда «Пуск». В этом случае выполнение программы прервется для отладки только по достижении точки останова. Точку останова можно поместить в любой строке, содержащей исполняемый код. Для этого поместите курсор в нужное место программы и выполните команду «Точка останова». При этом строка, если она не является исполняемой и на ней не стоит курсор, будет выделена красным цветом. Для снятия точки останова просто поместите на нее курсор и еще раз выполните команду «Точка останова». Чтобы прервать отладку, например, для повторного запуска, выполните команду «Стоп». Если отлаживаемая программа должна выводить что-либо на экран, результат этого вывода можно посмотреть, выполнив команду «Экран». Для возврата в отладчик, кликните мышью или нажмите любую клавишу. Просмотр переменных. Выполните команду «Просмотр» и в открывшемся окне введите имя переменной или выражение. После двойного нажатия на кнопку «Ok» выражение будет добавлено в окно просмотра, где также будет отображаться его значение. Для удаления выражения из окна просмотра, выделите его и нажмите клавишу Del. К сожалению, просмотру подлежат только выражения, содержащие глобальные переменные, поскольку доступ к локальным переменным извне в ОС невозможен. Обсуждение здесь. Для выхода из отладчика выполните команду «Выход». PS: Благодарю форумчанина @bob558 за идею написания удобного отладчика. А также форумчанина @NEO за неопровержимое обоснование того, что такой отладчик невозможен. Без чего я не смог бы преодолеть собственную лень, чтобы завершить свой скромный труд. 15 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ivan52945 75 Опубликовано: 2 января, 2017 вот как вы всё это умудряетесь писатьвот не понимаю я Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy Автор темы 2 187 Опубликовано: 3 января, 2017 вот как вы всё это умудряетесь писатьвот не понимаю я Во многом использую прошлые наработки. Найти неординарную задачу становится труднее, чем решить ее. 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 12 января, 2017 Понимаю, конечно, низкую вероятность того, что отлаживаемый код вдруг переназначит какой-нибудь table.insert, но устойчивость отладчика можно повысить, заранее скопировав все используемые глобальные методы в локальные переменные. Сам отладчик не запускал, но выглядеть это будет примерно так: > print(coroutine.yield) function: 0x41a600 > e={}for k,v in pairs(_G) do e[k]=v end > pcall(load("coroutine.yield=nil")) > print(coroutine.yield) nil Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrlobaker 4 Опубликовано: 22 января, 2017 А где hel? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 22 января, 2017 (изменено) А где hel? Ты кажется темой немного промазал. Если ты имел в виду репозиторий - то он тут: http://computercraft.ru/topic/1855-hel-repository/ Изменено 22 января, 2017 пользователем Totoro Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy Автор темы 2 187 Опубликовано: 3 марта, 2017 Вышла версия 1.2 отладчика. Новая версия позволяет: 1) Запускать на отладку программу с параметрами. Если Ваша программа требует параметров при вызове, после слова debugger и имени программы укажите параметры. Например: debugger digger.lua 20 40 2) В процессе отладки программы выполнять дополнительный код, которого нет в исходнике отлаживаемой программы. Это может быть полезным, если по ходу отладки необходимо изменить значение какой либо переменной. Для выполнения дополнительного кода нажмите клавишу Enter и в открывшемся окне "Выполнить" введите требуемый код. После чего нажмите кнопку ОК. 6 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 3 марта, 2017 Я о такой программе мечтал джва года Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ALeXeR 67 Опубликовано: 19 марта, 2017 как же оно похоже на borland`овские "IDE"))) 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах