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


Фотография

Отладчик

debugger

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

#1 Оффлайн   Zer0Galaxy

Zer0Galaxy

    The Lord of the Pings

  • Пользователи
  • PipPipPipPipPipPipPip
  • 1 158 сообщений

Награды

4                                 

Отправлено 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

 

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

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

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

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

 

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

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

 

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

 

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

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

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

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

 

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

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

 

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



#2 Оффлайн   ivan52945

ivan52945

    Продвинутый пользователь

  • Пользователи
  • PipPipPipPip
  • 106 сообщений

Награды

           

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

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



#3 Оффлайн   Zer0Galaxy

Zer0Galaxy

    The Lord of the Pings

  • Автор темы
  • Пользователи
  • PipPipPipPipPipPipPip
  • 1 158 сообщений

Награды

4                                 

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

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

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

#4 Онлайн   eu_tomat

eu_tomat

    Свой человек

  • Пользователи
  • PipPipPipPipPipPipPip
  • 625 сообщений

Награды

                    

Отправлено 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 сообщений

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

А где hel?



#6 Оффлайн   Totoro

Totoro

    Свой человек

  • Пользователи
  • PipPipPipPipPipPipPip
  • 1 481 сообщений

Награды

                                      

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

А где hel?

 

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

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


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


#7 Оффлайн   Zer0Galaxy

Zer0Galaxy

    The Lord of the Pings

  • Автор темы
  • Пользователи
  • PipPipPipPipPipPipPip
  • 1 158 сообщений

Награды

4                                 

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

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

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

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

debugger digger.lua 20 40

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

debugger.png

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



#8 Оффлайн   qwertyMAN

qwertyMAN

    Свой человек

  • Пользователи
  • PipPipPipPipPipPipPip
  • 1 362 сообщений
  • ГородCity17

Награды

                          

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

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



#9 Оффлайн   ALeXeR

ALeXeR

    Местный

  • Пользователи
  • PipPipPipPipPip
  • 183 сообщений
  • ГородОдесса

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

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


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




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

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


E-mail администратора: help@computercraft.ru
Яндекс.Метрика