breakpoint ) - это преднамеренное прерывание выполнения программы , при котором выполняется вызов отладчика (одновременно с этим, программа сама может использовать точки останова для своих нужд). После перехода к отладчику, программист может исследовать состояние программы (логи , состояние памяти , регистров процессора , стека и т. п.), с тем чтобы определить, правильно ли ведёт себя программа. После остановки в отладчике, программа может быть завершена либо продолжена с того же места где произошёл останов.

На практике, точка останова определяется как одно или несколько условий, при которых происходит прерывание программы. Наиболее часто используется условие останова при переходе управления к указанной инструкции программы (instruction breakpoint ). Другое условие останова - операция чтения, записи или изменения указанной ячейки или диапазона ячеек памяти (data breakpoint или watchpoint ).

Многие процессоры имеют аппаратную поддержку точек останова (обычно, только для instruction breakpoint и watchpoint). При отсутствии такой аппаратной поддержки отладчики используют программные точки останова.

Напишите отзыв о статье "Точка останова"

Отрывок, характеризующий Точка останова

– А это я у вас спрашиваю. Этого никто, и сам Бонапарте, не знает.
Болконский пожал плечами.
– Но ежели мост перейден, значит, и армия погибла: она будет отрезана, – сказал он.
– В этом то и штука, – отвечал Билибин. – Слушайте. Вступают французы в Вену, как я вам говорил. Всё очень хорошо. На другой день, то есть вчера, господа маршалы: Мюрат Ланн и Бельяр, садятся верхом и отправляются на мост. (Заметьте, все трое гасконцы.) Господа, – говорит один, – вы знаете, что Таборский мост минирован и контраминирован, и что перед ним грозный tete de pont и пятнадцать тысяч войска, которому велено взорвать мост и нас не пускать. Но нашему государю императору Наполеону будет приятно, ежели мы возьмем этот мост. Проедемте втроем и возьмем этот мост. – Поедемте, говорят другие; и они отправляются и берут мост, переходят его и теперь со всею армией по сю сторону Дуная направляются на нас, на вас и на ваши сообщения.
– Полноте шутить, – грустно и серьезно сказал князь Андрей.
Известие это было горестно и вместе с тем приятно князю Андрею.
Как только он узнал, что русская армия находится в таком безнадежном положении, ему пришло в голову, что ему то именно предназначено вывести русскую армию из этого положения, что вот он, тот Тулон, который выведет его из рядов неизвестных офицеров и откроет ему первый путь к славе! Слушая Билибина, он соображал уже, как, приехав к армии, он на военном совете подаст мнение, которое одно спасет армию, и как ему одному будет поручено исполнение этого плана.

Использование точек останова

Turbo Pascal предоставляет возможность устанавливать в программе для целей отладки точки останова. Точка останова - это обозначенная в коде программы позиция, в которой необходимо прекратить выполнение программы и вернуть выполнение отладчику. В этом смысле точка останова работает аналогично команде Go to Cursor, при которой программа выполняется обычным путем до достижения определенной точки. Основное различие состоит в том, что можно задать несколько точек останова и точки останова, которые будут срабатывать не при каждом их достижении.

3.5 Задание точек останова

Для задания точку останова нужно переместите курсор к той строке, где следует остановиться. Строка должна содержать выполняемый код и не может быть комментарием, описанием или пустой строкой. Выбор команды Toggle Breakpoint в локальном меню окна редактирования или нажатие клавиш Ctrl+F8 устанавливает на строке точку останова, которая обозначается подсветкой всей строки.

Теперь при выполнении программы из IDE она будет останавливаться при достижении данной строки, но перед ее выполнением. Строка, содержащая точку останова, выводится при этом в окне редактирования как строка выполнения. В этот момент можно выполнить любые другие действия по отладке (выполнение программы по шагам, трассировку, просмотр и вычисление).

3.6 Отмена точки останова

Для отмены точки останова поместить курсор на содержащую ее строку и выбрать в локальном меню окна редактирования команду Toggle Breakpoint или нажмите клавиши Ctrl+F8.

3.7 Модификация точек останова

В процессе сеанса отладки IDE отслеживает все точки останова. Для вывода диалогового окна Breakpoints нужно выбрать команду View|Breakpoints. В этом диалоговом окне можно устанавливать, удалять, редактировать и просматривать свои точки останова.

Командные кнопки диалогового окна Breakpoints работают следующим образом:

· Добавление новой: подсветить пустую строку в списке и выбрать

· кнопку Edit.

· Отмена точки останова: подсветить ее и выбрать кнопку Clear.

· Модификациия существующей точки останова: подсветить ее и выбрать Edit.

· Найти в исходном коде точку останова: подсветить ее и выбрать кнопку View.

· Удаление всех точек останова: выбрать кнопку Clear All.

3.8 Создание условной точки останова

Точки останова, добавленные командой Toggle Breakpoint, являются безусловными, то есть при попадании на эту строку, отладчик в любом случае останавливает программу. При редактировании новой или существующей точки останова есть дополнительная возможность – создать условные точки останова с помощью параметров диалогового окна Debug|Breakpoints…|Edit или Debug|Add Breakpoint. В этих точках останова можно задать два вида условий: счетчик проходов и логические условия.

3.8.1 Подсчет числа проходов

Задание для точки останова счетчика проходов сообщает отладчику, что останавливать программу нужно не при каждом достижении точки останова, а только на n-ый раз. То есть, если счетчик проходов равен 3, то отладчик останавливает программу только при третьем достижении данной точки останова.

3.8.2 Проверка условий

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

3.9 Прерывание программы без точек останова

Даже если не установлено ни одной точки останова, то все равно можно выйти в отладчик при выполнении программы из IDE. Для этого в любой момент работы программы нужно нажать клавиши Ctrl+Break. Отладчик находит позицию в исходном коде, где прервалась программа. Как и в случае обычной точки останова можно затем выполнить программу по шагам, трассировать ее, отследить или вычислить выражения.

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

Определение. Точка останова – это специальная метка, которую в отладочном режиме программист может поста вить против любой строки программы.

Затем программа запускается под управлением отладчика. Но это – не реальная работа. Это лишь имитация работы микроконтроллера. Программа выполняется строка за строкой, пока в очередной строке не встретится точка останова. Обнаружив такую точку, отладчик приостанавливает выполнение программы.

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

Для управления точками останова программа имеет несколько встроенных директив, которые показаны в таблице 1.2.

Таблица 1.2 – Директивы управления точками останова

Название

Пункт меню “Debug”

Кнопка

Горячая клавиша

Описание

Поставить точку останова

Toggle Breakpoint

Поставить (снять) точку останова в строке, где находится курсор

Убрать все точки останова

Remove all Breakpoints

Убрать все поставленные ранее точки останова

Создать программную точку останова

New Breakpoints/ Program Breakpoint

Создать точку останова путем задания программного условия

Создать точку останова по данным

New Breakpoints/ Data Breakpoint

Создать точку останова путем задания условия по данным

Для того, чтобы поставить точку останова в какой-либо строке программы, нужно сначала поместить в эту строку текстовый курсор. Затем выбрать директиву «Поставить точку останова» (см. табл. 1.2 ). Точка останова выглядит как коричневый кружочек напротив выбранной строки программы на левой границе текстового окна.

Если поместить курсор в строку, где уже есть точка останова, и выполнить еще раз директиву «Поставить точку останова», то точка убирается. Убрать сразу все поставленные точки останова можно при помощи директивы «Убрать все точки останова».

Второй способ простановки точек останова – задание их через меню. Предназначенный для этого пункт «New Breakpoints» меню «Debug» имеет два подпункта. При помощи подпункта «Program Breakpoint» можно устанавливать программные точки останова. То есть точно такие, какие мы ставили предыдущим способом.

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

Для этого вам необходимо заполнить поле «Break execution after: - hits» («Остановить выполнение после: - проходов»). Если число в этом поле не равно нулю, то программа остановится в данной точке останова не с первого раза, а лишь тогда, когда пройдет через нее указанное количество раз.

Если вы установили вашу точку останова не через меню, а напрямую в тексте программы, вы все равно можете вызвать описанный выше диалог и изменить в нем количество проходов, щелкнув; мышью по строке с описанием нужной точки останова во вкладке «Breakpoints and Tracepoints».

При помощи подпункта «Data Breakpoint» пункта «New Breakpoints» меню «Debug» можно задавать точки останова по данным. При выборе этого пункта меню открывается диалог, в котором вы можете выбрать любую из переменных вашей программы или любой ресурс микроконтроллера (из открывающегося списка) и поставить точку останова по обращению к этой переменной (ресурсу).

Программа позволяет выбрать целый ряд условий, при которых наступит останов программы. По умолчанию останов происходит при любом обращении к этой переменной как в режиме чтения, так и в режиме записи. Вы можете выбрать другое условие. Например, при равенстве переменной определенному значению. Выбор условия производится при помощи поля «Break when:» («Остановиться если:») и поля «Access type:» («Тип доступа»). Имя переменной выбирается при помощи поля «Location».

Диалог простановки точек останова обоих видов можно вызывать не только через меню. В верхней левой части вкладки «Breakpoints and Tracepoints» для этого имеется специальная кнопка.

После того, как вы проставили все точки останова, вы можете запускать программу в режиме автоматического выполнения. Для управления отладчиком в этом режиме программа AVR Studio также имеет несколько специальных директив (см. табл. 1.3 ). Запуск автоматического выполнения программы производится при помощи директивы «Пуск».

Пока программа находится в режиме автоматического выполнения, новое состояние регистров не отображается. Указатель текущей команды также отсутствует. В нижней строке главной панели программы в правой ее стороне находится индикатор состояния. В режиме останова это желтый кружочек с минусом посередине. Слева от него находится слово «Stopped» (Остановлено). В режиме автоматического выполнения программы желтый кружочек превращается в зеленый с плюсом внутри. Вместо слова «Stopped» появляется слово «Running» (Запущено).

Таблица 1.3Директивы управления процессом отладки

Название

Пункт меню “Debug”

Описание

Запустить

Запуск автоматического выполнения программы

с текущей команды

Остановить

Остановка автоматического выполнения программы

Исходное состояние (сброс микроконтроллера)

Закончить отладку

Закончить отладку

Если вы неправильно поставили точку останова или забыли ее поставить, программа будет находиться в режиме автоматического выполнения бесконечно долго. Для досрочной остановки программы используется директива «Остановить». Если в процессе отладки программы понадобится начать все сначала (симитировать сброс микроконтроллера), это можно сделать при помощи директивы «Сброс». По окончании отладки программы необходимо перейти в режим редактирования. Для этого служит директива «Закончить отладку».

4 ответов

Определение:

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

Как установить точку останова памяти

    В меню "Отладка" выберите "Новая точка останова" и нажмите "Новая точка останова данных"

    в окне "Точки останова" выберите "Новое раскрывающееся меню" и выберите "Новая точка останова данных".

    Появится диалоговое окно New Breakpoint.

    В поле "Адрес" введите адрес памяти или выражение, которое оценивает адрес памяти. Например, & foo для разрыва при изменении содержимого переменной foo.

    В поле "Количество байтов" введите количество байтов, которое вы хотите отследить отладчика. Например, если вы введете 4, отладчик будет следить за четырьмя байтами, начинающимися с & foo и break, если какой-либо из этих байтов изменит значение.

    Нажмите "ОК".

    До сих пор мы получили отличное определение и кучу великих теоретических объяснений.

    Приведем конкретный пример!

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

    К счастью, у нас есть возможность включить диспетчер памяти отладки, который проверяет такие вещи. Я включил его, и он сразу же начал сообщать о нарушении защиты блока памяти, что означает, что что-то вышло за рамки. Проблема в том, что этот отчет появляется только после освобождения памяти - по существу, говоря: "эй, что-то было сломано. Надеюсь, ты сможешь понять, что!"

    К сожалению, этот конкретный кусок памяти, в момент освобождения, полностью неотличим от буквально тысяч других кусков памяти. К счастью, наши метки отладки основывают каждое выделение с последовательным идентификатором, а поврежденная память имеет согласованный идентификатор (# 9667, если вам интересно). Одна быстрая точка останова в менеджере памяти позже, и я смог найти, где это память была выделена. Который, как выяснилось, тоже не помог.

    Но в этот момент у меня было несколько важных компонентов:

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

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

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

    На практике, точка останова определяется как одно или несколько условий, при которых происходит прерывание программы. Наиболее часто используется условие останова при переходе управления к указанной инструкции программы (instruction breakpoint ). Другое условие останова - операция чтения, записи или изменения указанной ячейки или диапазона ячеек памяти (data breakpoint или watchpoint ).

    Многие процессоры имеют аппаратную поддержку точек останова (обычно, только для instruction breakpoint и watchpoint). При отсутствии такой аппаратной поддержки отладчики используют программные точки останова.


    Wikimedia Foundation . 2010 .

    Смотреть что такое "Точка останова" в других словарях:

      точка останова - stabdos taškas statusas T sritis automatika atitikmenys: angl. break point; breakpoint vok. Anhaltepunkt, m; Fixpunkt, m rus. точка останова, f pranc. point d arrêt, m; point d interruption, m … Automatikos terminų žodynas

      точка останова (программы) - — Тематики нефтегазовая промышленность EN breakpoint …

      точка ломаной линии - останов прерывание точка прерывания точка разрыва точка останова — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом Синонимы остановпрерываниеточка… … Справочник технического переводчика

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

      - << Intel 80386 >> Центральный процессор Микропроцессор Intel 80386 Производство … Википедия

      В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете отредактировать эту статью … Википедия

      Отладка этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Чтобы понять, где возникла ошибка, приходится: узнавать текущие значения переменных; выяснять, по какому пути выполнялась… … Википедия

      Описание: Отладочная ловушка По умолчанию: завершение процесса коды SA SIGINFO TRAP BRKPT Достигнута точка останова TRAP TRACE Шаг трассировки выполнен В POSIX системах, SIGTRAP сигнал, посылаемый для информирования отладчика о… … Википедия

      Отладка этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Чтобы понять, где возникла ошибка, приходится: узнавать текущие значения переменных; и выяснять, по какому пути выполнялась программа.… … Википедия