Контрольные точки в программе

В процессе отладки иногда возникает необходимость приоста­новить работу программы при доказательстве каждой цели. В Про­логе для этого имеется средство, называемое методом контроль­ных точек.

Применение контрольных точек дает возможность пользователю остановить выполнение программы при переходе к новой цели, про­верить состояние параметров и, возможно, воздействовать на даль­нейший процесс доказательства.

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

Возможные действия в контрольной точке

Возможности, имеющиеся в контрольной точке, зависят от реа­лизации Пролога, но в общем их можно свести к следующим:

a (abort/прекратить) — вернуться на верхний уровень интерпре­татора;

b (backtrace/вернуться назад) — показать последние N выполнен­ных целевых утверждений;

f (fail/неудача) — установить результат «неудача» при доказа­тельстве текущей цели;

s (succeed/успе綮) — установить результат «успех» при доказа­тельстве текущей цели.

MS Project 2016 Контрольные точки проекта

Включение и выключение режима контрольных точек

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

Приведем два типичных метода включения режима контрольных точек.

1. Использование механизма прерывания с клавиатуры, напри­мер одновременное нажатие клавиш CTRL и S. Повторное нажатие клавиш CTRL и S приводит к отключению режима контрольных то­чек. Программист имеет возможность применить данный метод при разработке программы за терминалом.

2. Применение предиката spy для включения режима контроль­ных точек и предиката nospy для выключения. Данный метод служит для проверки отдельных частей программы. Предикат spy необ­ходимо вставить в программу непосредственно перед проверяемым участком, а предикат nospy — сразу после него.

В результате выполнение программы будет приостанавливаться на каждом целевом утверждении из последовательности, находя­щейся между этими двумя предикатами.

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

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

Необязательные параметры режима контрольных точек

Кроме общих параметров режима контрольных точек, рассмот­ренных ранее, некоторые реализации Пролога поддерживают специ­альные параметры. Если это необходимо, пользователю разрешается подключать контрольные точки к любому предикату в своей про­грамме. После присоединения контрольных точек пользователь включает режим контрольных точек, который прерывает выполне­ние программы только в тот момент, когда целевыми утверждениями становятся предикаты с контрольными точками. Благодаря этому программы на Прологе выполняются обычным образом (за исключе­нием скорости выполнения) между целевыми утверждениями с конт­рольными точками.

Как работает программа Avtorobot. Контрольные точки кузова.

Источник: studfile.net

Вопрос № 18. Особенности прогона программы с контрольными точками

Прогон (запуск или продолжение выполнения) программы осуществляется командой Run. Для остановки выполнения программы служит команда Break.
Контрольные точки представляют собой специальные маркеры для программы-отладчика и могут быть трёх типов: точки останова, точки трассировки и точки наблюдения.

Читайте также:
Где должна размещаться программа перед выполнением

Вопрос № 19. Контрольные точки: типы, назначение, использование.

Точки останова задаются командой Toggle Breakpoint меню Debug или контекстного меню редактора исходного текста программы. Точка останова обозначается в редакторе исходного текста символом слева от помечаемой строки.

Просмотреть заданные точки останова можно на закладке Breakpoints окна Output; там же точки останова могут быть запрещены (путём сброса флажка напротив точки останова) и разрешены (путём установки флажка). При достижении точки останова во время прогона программы её выполнение приостанавливается.

Повторный вызов команды установки точки останова на той же строке программы приводит к удалению точки останова. Удалить все заданные точки останова позволяет команда Remove Breakpoints меню Debug или команда Remove all Breakpoints контекстного меню закладки Breakpoints окна Output.

Параметры точки останова задаются в диалоговом окне Breakpoint Condition, вызов которого осуществляется командой Breakpoints Properties контекстного меню редактора исходного текста программы. Установка флажка Iterations позволяет задать количество итераций (повторных выполнений) команды до останова прогона программы.

При установке флажка Watchpoint по достижению точки останова производится только обновление значений регистров и ячеек памяти в окнах просмотра. Флажки Iterations и Watchpoint не должны устанавливаться одновременно. Установка флажка Show message обеспечивает отображение сообщений о достижении точки останова на закладке Breakpoints окна Output. Вызов диалогового окна задания свойств и удаление точки останова могут быть произведены из контекстного меню закладки Breakpoints окна Output.

Точки трассировки предназначены для контроля выполнения программы в режиме реального времени. Трассировка позволяет отслеживать так называемую трассу программы – изменение содержимого регистров и ячеек памяти при выполнении определённых команд (команд, по адресам которых заданы точки трассировки). В среде AVR Studio функция трассировки может использоваться только при отладке программы с применением внутрисхемного эмулятора; при работе в режиме симулятора функция трассировки недоступна.

Точки наблюдения задаются командой Add to Watch контекстного меню редактора исходного текста программы. Точки наблюдения представляют собой символические имена регистров или ячеек памяти, содержимое которых необходимо отслеживать.

При выполнении команды Add Watch на экране появляется окно Watches, разделённое на четыре столбца: Name (символическое имя точки наблюдения), Value (значение), Type (тип), Location (местонахождение). Новая точка наблюдения может быть также задана в выделенной ячейке столбца Name окна Watches или командой Quickwatch в окне редактора исходного текста программы (при этом курсор должен находиться на имени регистра или ячейки памяти). Значения, отображаемые в столбце Value, обновляются при изменении содержимого соответствующего регистра или ячейки памяти. Удалить заданные точки наблюдения можно из окна Watches.
Отладчик среды ^ AVR Studio также обеспечивает следующие функции: выполнение до курсора (команда Run to Cursor меню Debug) и последовательное выполнение команд с паузами между ними (команда Auto Step меню Debug). Для удобства использования в процессе отладки ряд команд отладчика доступен с клавиатуры (табл. 2).

Читайте также:
Как создать оболочку для программы
Команда отладчика Клавиша Команда отладчика Клавиша
Run F5 Step Into F11
Break Ctrl+F5 Step Out Shift+F11
Reset Shift+F5 Step Over F10
Run to Cursor Ctrl+F10 Toggle Breakpoint F9

Для просмотра и изменения содержимого регистров и ячеек памяти служат команды Registers, Memory, Memory 1, Memory 2, Memory 3 меню View.
По команде Registers на экране отображается окно Registers, в котором приводятся шестнадцатеричные представления содержимого РОН. Изменение (модификация) содержимого регистров производится путём двойного щелчка мышью. Наблюдение за содержимым РОН может быть также произведено с помощью дерева устройств микроконтроллера, находящегося на закладке I/O окна Workspace. Для этого необходимо раскрыть объекты Register 0-15 и
Register 16-31 щелчком мыши по знаку «+». Команды Memory, Memory 1, Memory 2, Memory 3 обеспечивают вызов окон Memory, служащих для отображения содержимого ячеек оперативной и энергонезависимой памяти данных, памяти программ, регистров ввода-вывода и РОН.

Выбор типа памяти, отображаемой в окне Memory, производится с помощью списка, расположенного в панели управления окна (Data – оперативная память данных, Eeprom – энергонезависимая память данных, I/O – регистры ввода-вывода, Program – память программ, Register – РОН). Для наблюдения за состоянием процессора необходимо раскрыть объект Processor закладки I/O окна Workspace.

При этом будет отображена следующая информация: содержимое программного счётчика (Program Counter); содержимое указателя стека (Stack Pointer), количество тактов, прошедших с начала выполнения (Cycle Counter); содержимое 16-разрядных регистров-указателей X, Y и Z; тактовая частота (Frequency); затраченное на выполнение время (Stop Watch). Для контроля содержимого регистров ввода-вывода необходимо раскрыть объект ^ I/O * закладки I/O окна Workspace, где * – тип микроконтроллера. Регистры ввода-вывода, входящие в объект I/O, сгруппированы по типам периферийных устройств. Модифицированные значения содержимого регистров и ячеек памяти действуют только во время текущего сеанса отладки, в исходный текст программы изменения не заносятся.

Источник: studopedia.org

Контрольные точки в исходном коде

Это самый распространенный вид контрольных точек. Точка представляет собой маркер, установленный на некоторой строке исходного кода. Когда управление достигает этой строки, программа приостанавливается.

Проще всего установить контрольную точку такого типа прямо в редакторе кода, щелкнув кнопкой мыши на пробельном поле редактора (слева от текста) рядом со строкой, на которой требуется приостановить программу. В пробельном поле появится красный маркер, и сама строка будет выделена красным цветом фона (рис. 5.1). Повторное нажатие кнопки мыши удаляет контрольную точку.

Рис. 5.1Установка контрольных точек

Если теперь запустить программу кнопкой Run, она будет остановлена на контрольной точке (рис. 5.2).

Читайте также:
Прекращена работа программы gldriverquery64 exe

Зеленая пометка на маркере контрольной точки означает, что точка проверена и признана действительной. Могут быть и недействительные контрольные точки – такие, что установлены на строках, не генерирующих исполняемого кода. Это могут быть комментарии, объявления, пустые строки или операторы, исключенные при оптимизации программы.

Текущая точка исполнения показана в пробельном поле зеленой стрелкой. Она указывает строку, которая должна исполняться следующей. Программу можно продолжить кнопкой Run или выполнять ее операторы в пошаговом режиме, о чем будет сказано ниже.

Рис. 5.2Остановка программы на контрольной точке

То, что мы сейчас показали – это простые контрольные точки в исходном коде; контрольные точки могут быть также условными, со счетчиком проходов или комбинированного типа.

Если вы в данный момент экспериментируете с отладчиком, откройте окно списка контрольных точек (View Debug Windows Breakpoints). Оно отображает все имеющиеся контрольные точки. Контекстное меню окна позволяет запретить остановку программы на контрольной точки, не удаляя ее (пункт Enable). Кроме того, выбрав пункт Properties. вы получите доступ к свойствам выбранной точки (рис. 5.3 и 5.4).

Рис. 5.3Окно Breakpoint List

Рис. 5.4 Диалог Source Breakpoint

В поле Condition диалога Source Breakpoint Properties можно задать условие остановки на контрольной точке. Условие может быть любым допустимым выражением языка C/C++, которое можно оценить как истинное или ложное. Остановка по достижении контрольной точки будет происходить только в том случае, если условие истинно.

Контрольные точки со счетчиком проходов можно считать разновидностью условных. Требуемое число проходов вводится в поле Pass count. Если число проходов установлено равным п, остановка программы произойдет только на n -ом проходе через контрольную точку. Точки со счетчиком удобны при отладке циклов, когда вам нужно выполнить тело цикла определенное число раз и только потом перейти к пошаговому выполнению программы.

Счетчик может быть очень полезен, когда вам нужно определить, на каком проходе цикла возникает ошибка, вызывающая завершение программы. В окне списка контрольных точек отображается не только заданное, но и текущее число проходов точки (например, “7 of 16”). Задав число проходов, равное или большее максимальному числу итераций цикла, вы при завершении программы сразу увидите, сколько раз на самом деле он выполнялся.

Возможна комбинация этих двух типов контрольных точек, которую можно назвать точкой с условным счетчиком. Если для контрольной точки задано и условие, и число проходов, то остановка произойдет только на п-ом “истинном” проходе через нее. Проходы, для которых условие оказывается ложным, “не считаются”.

Условия и счетчик можно задавать для всех видов контрольных точек кроме точек загрузки модуля, т. е. для исходных, адресных и точек данных.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

Источник: studopedia.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru