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


Фотография

Отладчик

debugger

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

#1 Оффлайн   Zer0Galaxy

Zer0Galaxy

    The Lord of the Pings

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

Награды

                             

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

    Пользователь

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

Награды

        

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

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



#3 Оффлайн   Zer0Galaxy

Zer0Galaxy

    The Lord of the Pings

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

Награды

                             

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

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

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

#4 Онлайн   eu_tomat

eu_tomat

    Свой человек

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

Награды

                    

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





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

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


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