Для того чтобы можно было отлаживать приложение (искать логические ошибки) необходимо обнаружить и исправить все синтаксические ошибки. Следовательно, приложение должно быть откомпилировано, без каких либо ошибок (допускается появление предупреждений).
Для компиляции проект необходимо выбрать пункт меню Project/Compile Module(Ctrl+F9) или нажать на кнопку (компиляцию объекта можно явно не выполнять, она будет выполнена автоматически на этапе сборки). Если в отчете не было выведено сообщений об ошибках, то можно перейти к этапу сборки проекта.
Собрать проект, можно выбрав пункт меню Project/Build(Alt+F9) или нажать на кнопку . Если все прошло без ошибок, то в результате сборки будет получен целевой exe | dll (в зависимости от настроек поля Target Type см. пт. 1.1.2) файл.
Если проект собран без ошибок и получен целевой файл, то можно перейти до отладки программы. Для запуска отладчика и загрузки в него программы можно воспользоваться одним из двух способов. Первый способ удобен для загрузки текущей программы, и предусматривает использование среды IDE Visual Prolog. Для этого выбираем пункт меню Project/Debug(Ctrl+Shift+F9) или нажимаем на кнопку . Второй способ позволяет запустить отладчик без запуска IDE Visual Prolog. Для этого запускаем файл vipdebug.exe и указываем программу которую будем отлаживать(рис.2.1.).
Рис.2.1. Выбор программы для отладки.
Не зависимо от того, какой способ загрузки был выбран, в результате получим окно отладчика (рис.2.2).
Рис.2.2. Окно отладчика.
Сразу после запуска, отладчик автоматически загружает все модули программы и устанавливает указатель на начало отлаживаемой программы рис.2.3.(goal – точка входа), с него будет стартовать процесс отладки.
После загрузки отладчика загруженная в него программа автоматически не запускается, и ее надо запускать самостоятельно. Для этого можно воспользоваться кнопкой (пункт меню Run/Run(F9)) или одним из способов пошаговой отладки (см. ниже).
Рис.2.3. Стартовая точка.
Режим трассировки:
Процесс отладки можно выполнять пошагово (трассировка). Для этого можно использовать пункты меню Run/:
- Trace Into (F7) при использовании этой команды в процессе трассировки мы будем входить в тело всех функций, которые встретятся «на пути»;
- Step Over (F8) все «встреченные» функции будут выполнены как одна неделимая команда.
Программы на Visual Prolog больших объемов и пошаговая отладка бывает достаточно медленной и неудобной. Для ускорения отладки используются точки останова(Breakpoint) и режим выполнение «до курсора».
Использование точек останова:
Первым делом нужно установит Breakpoint. Это можно сделается двойным нажатием левой клавиши мыши на интересующей строке либо поставить курсор на интересующую строку и выбрать пункт меню Edit/ Breakpoint…/Add\Remove (Enter) можно также использовать пункт Breakpoint…/Add\Remove в контекстном меню.
Удалить Breakpoint, можно повторив процедуру установки для той же строки.
Также используя пункт меню Edit/ Breakpoint … можно задать параметры точки останова и сделать ее действующей или временно отключенной рис2.4.
Рис.2.4. Пример активной и не активной точки останова.
После задания точек останова можно запустить программу на выполнение, используя кнопку или пункт меню Run/Run(F9). При достижении Breakpoint выполнение программы приостановиться. На этом этапе можно будет применить пошаговое выполнения. После чего можно продолжить выполнение до следующей точки останова(если таковая иметься) либо до окончания программы.
Рекомендации по применению точек останова:
Точки останова устанавливаться в обработчиках сообщений, в циклах, в конце функций (для проверки правильности их выполнения), а также в местах программы, правильная работа которых вызывает сомнения или неоднозначности.
Использование режима «до курсора»:
Этот режим используется в тех случаях, когда необходимо задать одну точку останова или точка останова не будет интересовать пользователя при следующем ее достижении. Например, нужно посмотреть значение переменных на первой итерации цикла, а последующие выполнить без остановки. Для задания этого режима необходимо установить курсор на интересующую строку и выбрать пункт меню Run/Run To Cursor(F4)
Ориентировка в коде программы и оценка значений:
Для ускорения поиска необходимой функции или обработчика необходимо вывести окно, содержащее список всех модулей (View/Modules) рис. 2.6. В этом окне выбираем интересующий нас модуль, раскрываем список всех функций и выбираем нужную функцию. Все обработчики находятся в модуле окна (если окно main, то и обработчики в main.pro).
Для оценки значений используются окна, которые можно открыть с помощью вкладок меню View (рис.2.5.).
Рис.2.5. Меню.
Рис.2.6. Окно модулей.
В меню View есть ряд очень полезных подменю(рис.2.7.-рис.2.14.).
Рис.2.7. Окно для просмотра базы знаний (фактов).
Рис.2.8. Окна для просмотра точек останова и трассировки.
Рис.2.9. Окно для просмотра содержания стека.
Рис.2.10. Окно для просмотра значения переменных.
Рис.2.11. Окно для просмотра загрузки памяти.
Рис.2.11. Окно для просмотра списка открытых файлов.
Рис.2.12. Окно для просмотра событий.
Рис.2.13. Окно для просмотра состояния регистров процессора.
Также имеется еще несколько вкладок, которые позволяют получить ассемблерный код программы, просмотреть содержание памяти (дамп памяти с заданным интервалом обновления и начальным адресом), проследить за выполнением и распределением процессорного времени (состояние нитей).
Рис.2.14. Окно для просмотра состояния отладки и выполнения.
Примечание:
В использованной мной версии Visual Prolog, отладчик работал только при условии, что программа была переписана, а не установлена.