Отладка приложений в FreeBasic (c помощью Insight, FBDebugger...)

В этой статье я продолжу рассказ об отладке с помощью отладчиков , имеющих GUI интерфейс. Вопрос коснется рассмотрения их интерфейса. Если вам нужно понимание самой отладки, то советую почитать первую статью про отладку с помощью консольного GDB. Принципы ничем не отличаются, разве что с помощью GUI отладчиков это делается более удобно на мой взгляд. Конечно упомяну о плюсах и минусах каждого из отладчиков. А уж вам решать каким инструментом пользоваться.

Начнем с GUI обвески Insight над отладчиком GDB.

Отладчик оставляет неплохое впечатление:

  • отладку можно выполнять как с помощью горячих клавиш, так и просто с помощью меню и кнопок тулбара.
  • все окна разбиты по категориям и легко доступны с панели тулбара или из меню: удобный просмотр регистров, стека, локальных переменных, массивов и пр.
  • есть возможность изучения работы программы с выводом не только исходника, но и ассемблерного листинга, при том можно и того и другого одновременно
  • есть небольшие настройки внешнего вида, например шрифт
  • имеется панель консольного ввода команд напрямую отладчику GDB

Из минусов:

  • Разработка давно застыла , то есть обновлений и исправлений ждать не приходится. А исправлять есть чего. Баги встречаются.
  • Не поддерживает строки на русском, равно как и не загружает программу из каталогов , имеющих в пути кириллицу. Хотя сам отладчик GDB не имеет этих минусов

insight_debug0.png

Если посмотреть на интерфейс, то он как говорят интуитивно понятен. Брекпоинты можно раставлять прямо кликая по нужным строкам в окне исходного кода. В окошке окна выбора файлов можно выбрать любой исходный файл, задействованный в проекте. В окошке выбора процедур, как вы понимаете, можно выбрать любую процедуру любого модуля. И окно выбора вида кода позволяет переключать вид исходного кода ASM<->FreeBasic. Выполняемая на данный момент строка как видно из скриншота подсвечивается зеленым цветом. А при установке брекпоинтов, на строке будет виден красный квадратик.

insight_debug.png

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

  1. RUN (начать\перезапустить отладку)
  2. STEP (переход на следующую выполняемую линию)
  3. NEXT (переход на следующую выполняемую линию без захода в процедуры)
  4. FINISH (временная внутренняя точка останова)
  5. CONTINUE (продолжить до следующей точки останова)
  6. STEPI (пошаговое выполнение команд, то есть если на строке будет несколько команд, каждая из них будет отдельным шагом в отладке)
  7. NEXTI (то же что и STEPI , но не заходя в процедуры)
  8. просмотр регистров
  9. просмотр памяти
  10. просмотр стека
  11. просмотр и добавление всех брекпоинтов на доступ к памяти
  12. просмотр локальных переменных
  13. просмотр всех обычных брекпоинтов
  14. вывод консоли для прямого ввода команд в GDB
  15. окно поиска слова по исходному коду
  16. дополнительные функции для вывода информации о стеке

Все имеющиеся кнопки тулбара дублируются в меню и у каждой есть горячая клавиша. Но так же в меню есть еще несколько нужных и значимых вещей , таких как возможность принудительно завершить выполнение программы, просмотр всех потоков, открытия файлов, настройки, печать и пр.

В окнах можно не только лицезреть отлаживаемую информацию, но и изменять ее по своему усмотрению:

insight_debug1.png

На скриншоте как видите при вызове контекстного меню, можно получить значение в любом формате. При вызове подменю Edit , можно редактировать любую переменную. Так же может быть полезна опция Dump Memory для просмотра области памяти , где располагается переменная.

В принципе Insight довольно юзабельный и вполне возможно, что под Linux работает даже без замеченных мною багов. Ведь под Windows его попросту портировали, возможно много чего упустили...

-------------------------------------------------------------

Отладчик FBDebugger (мой выбор)

fbdebugger_screen.png

Возможности отладчика:

В принципе умеет все описанное для Insight , плюс:

  • возможность переноса исполняемой линии,
    то есть имеется возможность неоднократной прокрутки
    какого-либо места в программе
  • полная настройка внешнего вида
  • автоматический переход по линиям по таймеру
  • подсветка синтаксиса для кода
  • дополнительные плюшки вроде сохранений брекпоинтов при перезагрузке, заметки и пр.)
  • проект постоянно совершенствуется и имеет хорошую поддержку автора

Недостатки:

  • только под Windows
  • просмотр массивов неудобен (у insight лучше)

Поближе познакомиться с интерфейсом этого отладчика онлайн вы можете ЗДЕСЬ. Либо взять его в разделе СКАЧАТЬ в подразделе Файлы справки и манулы. Там хоть и для старой версии (2.58), но для понимания работы с этим инструментом более чем достаточно.

-------------------------------------------------------------

И еще один слабенький по меркам вышеописанных отладчик FBDEBUG, встроенный в редактор FbEdit. Данный отладчик работает только под Windows, умеет делать трассировку, и просматривать значения, на большее он не способен.

fbdebug_fbedit.png

В редакторе нет никаких кнопок на тулбаре, связанных с отладкой. Все находится только в меню, ну и конечно можно осуществлять по горячим клавишам. Первые два пункта меню это установка и удаление брекпоинтов. Затем идут три пункта меню запуска\прерывания\остановки отладки. И далее три пункта: шаги по исполняемым линиям\по исполняемым линиям без захода в процедуры\ по брекпоинтам. Последний пункт меню позволяет отключить отладчик. Просмотр переменных осуществляется в всплывающих подсказках при установке курсора мыши на нужную переменную. Так же есть возможность просмотра регистров:

fbdebug_fbedit2.png

Вот собственно и все по отладке. Удачи!