Перейти к содержимому


Фотография

Отладчик

debugger

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 213
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

5                                 

Отправлено 02 Январь 2017 - 12:20

*
Популярное сообщение!

У многих начинающих (да и у достаточно опытных) программистов часто случаются ситуации, когда программа вот уже вроде написана, запускается и работает, только работает не совсем так, как хотелось бы. Встроенные средства отладки языка Lua, и без того скудные, в варианте для OpenComputers отсутствуют вовсе. А так иногда охота посмотреть, по какой же ветке прошел if и чему равняется переменная в тот или иной момент выполнения программы.

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

 

Как же заполучить это чудо на свой жесткий диск?

Первым делом устанавливаем GUI-библиотеку forms, если конечно вы этого по каким-то причинам до сих пор не сделали: pastebin get iKzRve2g lib/forms.lua

Вторым делом качаем сам отладчик: pastebin get X48P31Gj bin/debugger.lua

Вот собственно и вся установка.

 

Для запуска какого либо lua-файла в отладчике просто пишем его имя после команды debugger, например, так:

debugger nod.lua

Если отлаживаемый файл будет загружен без ошибок, вы должны увидеть примерно такой интерфейс:

 

Прикрепленный файл  Debugger.png   116,03К   79 Количество загрузок:

 

Экран отладчика разделен на три неравных части.

- Верхняя светло-голубая строка – это меню команд, при помощи которых будет происходить отладка. Чтобы выполнить ту или иную команду, необходимо кликнуть по ней мышью или нажать соответствующую функциональную клавишу.

- Синее окно – окно отладчика, в котором можно наблюдать отлаживаемый код и другую полезную информацию.

- Нижнее зеленое окно – окно просмотра переменных. В нем можно наблюдать текущие значения переменных.

 

Запуск отладки может быть осуществлен одним из трех способов.

Самый медленный, но самый надежный способ – пошаговая отладка. Выполните команду «Шаг». В окне отладчика одна из строк будет подсвечена зеленым цветом. Это исполняемая строка программы, т.е. строка, которая будет выполнена на следующем шаге. Таким образом, раз за разом выполняя команду «Шаг», можно проследить последовательность выполнения программного кода. Режим работы отладчика «RUN/STOP» и номер исполняемой строки можно наблюдать в левом нижнем углу окна отладчика.

 

Если же вы желаете начать отладку не с самого начала программы, а с какого либо участка, переместите курсор (выделен светло-синим цветом) в начало участка и выполните команду «До курсора». Для перемещения курсора прокрутите код программы при помощи колесика мыши и кликните на нужную строку. Альтернативным способом перемещения курсора являются кнопки «Вверх» и «Вниз». Позиция курсора отображается в правом нижнем углу  окна отладчика.

 

И наконец, третий способ запуска программы – команда «Пуск». В этом случае выполнение программы прервется для отладки только по достижении точки останова. Точку останова можно поместить в любой строке, содержащей исполняемый код. Для этого поместите курсор в нужное место программы и выполните команду «Точка останова». При этом строка, если она не является исполняемой и на ней не стоит курсор, будет выделена красным цветом. Для снятия точки останова просто поместите на нее курсор и еще раз выполните команду «Точка останова».

Чтобы прервать отладку, например, для повторного запуска, выполните команду «Стоп».

Если отлаживаемая программа должна выводить что-либо на экран, результат этого вывода можно посмотреть, выполнив команду «Экран». Для возврата в отладчик, кликните мышью или нажмите любую клавишу.

Просмотр переменных. Выполните команду «Просмотр» и в открывшемся окне введите имя переменной или выражение. После двойного нажатия на кнопку «Ok» выражение будет добавлено в окно просмотра, где также будет отображаться его значение. Для удаления выражения из окна просмотра, выделите его и нажмите клавишу Del.

 

К сожалению, просмотру подлежат только выражения, содержащие глобальные переменные, поскольку доступ к локальным переменным извне в ОС невозможен. Обсуждение здесь.

Для выхода из отладчика выполните команду «Выход».

 

PS: Благодарю форумчанина bob558 за идею написания удобного отладчика. А также форумчанина NEO за неопровержимое обоснование того, что такой отладчик невозможен. Без чего я не смог бы преодолеть собственную лень, чтобы завершить свой скромный труд.



#2 Оффлайн   ivan52945

ivan52945
  • Пользователи
  • Сообщений: 129
  • Уровень сигнала: 62,7%
  • В игре: 384 час. 21 мин.

Награды

           

Отправлено 02 Январь 2017 - 23:10

вот как вы всё это умудряетесь писать
вот не понимаю я



#3 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 213
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

5                                 

Отправлено 03 Январь 2017 - 07:50

вот как вы всё это умудряетесь писать
вот не понимаю я

Во многом использую прошлые наработки. Найти неординарную задачу становится труднее, чем решить ее.
  • 1Ridav, Alex и qwertyMAN это нравится

#4 Оффлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 793
  • Уровень сигнала: 0,05%
  • В игре: 0 час. 19 мин.

Награды

                          

Отправлено 12 Январь 2017 - 17:00

Понимаю, конечно, низкую вероятность того, что отлаживаемый код вдруг переназначит какой-нибудь 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


#5 Оффлайн   mrlobaker

mrlobaker
  • Пользователи
  • Сообщений: 7
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Отправлено 22 Январь 2017 - 17:31

А где hel?



#6 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 683
  • Уровень сигнала: 0,36%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 22 Январь 2017 - 17:45

А где hel?

 

Ты кажется темой немного промазал.

Если ты имел в виду репозиторий - то он тут: http://computercraft...hel-repository/


Сообщение отредактировал Totoro: 22 Январь 2017 - 17:46


#7 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 213
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

5                                 

Отправлено 03 Март 2017 - 17:15

Вышла версия 1.2 отладчика.

Новая версия позволяет:

1) Запускать на отладку программу с параметрами. Если Ваша программа требует параметров при вызове, после слова debugger и имени программы укажите параметры. Например:

debugger digger.lua 20 40

2) В процессе отладки программы выполнять дополнительный код, которого нет в исходнике отлаживаемой программы. Это может быть полезным, если по ходу отладки необходимо изменить значение какой либо переменной. Для выполнения дополнительного кода нажмите клавишу Enter и в открывшемся окне "Выполнить" введите требуемый код.

Прикрепленный файл  debugger.png   10,15К   4 Количество загрузок:

После чего нажмите кнопку ОК.



#8 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 404
  • Уровень сигнала: 0,17%
  • В игре: 1 час. 3 мин.
  • ГородCity17

Награды

                             

Отправлено 03 Март 2017 - 18:48

Я о такой программе мечтал джва года



#9 Оффлайн   ALeXeR

ALeXeR
  • Пользователи
  • Сообщений: 201
  • Уровень сигнала: 41,76%
  • В игре: 255 час. 59 мин.
  • ГородОдесса

Отправлено 19 Март 2017 - 16:45

как же оно похоже на borland`овские "IDE")))


  • unknown и Kartze это нравится




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика