Turbo Debugger 5.0: Руководство по применению, при выполнении лабораторных работ, страница 13

Опция Breakpointsвключает в себя шесть директив, позволяющих устанавливать и ликвидировать контрольные точки всех указанных видов.

- Toggle      - Changed Memory Global…    - Hardware Breakpoint…

- At…         - Expression True Global…        - Delete All

BREAKPOINTS /Toggle

ДирективаToggle(переключатель, выключатель)позволяетустановитьили ликвидировать контрольную точку простейшего типа с безусловным остановом по адресу инструкции отлаживаемой программы, выделенному маркерной полосой в кодовой панели окна CPU, или текущей строке исходного файла программы в окне Module. Каждый раз, когда отлаживаемая программа, при выполнении достигает места установки (адреса) такой контрольной точки, она останавливается. При этом команда программы по этому адресу не выполняется, а управление передается отладчику. «Горячей клавишей», инициирующей действие директивы Toggle, является управляющая клавиша F2.

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

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

BREAKPOINTS /AT

При выборе опции AT на экране дисплея появляется диалоговое окно Breakpointoptions, которое позволяет задавать директивы, управляющие условиями срабатывания установленной контрольной точки и теми действиями, которые должны совершаться при их срабатывании. «Горячей клавишей», инициирующей действие директивы AT является Alt-F2, т.е. одновременное нажатие клавиш AltиF2.

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

Поле Global позволяет к текущему списку контрольных точек добавить глобальную контрольную точку. Характерной особенностью глобальной контрольной точки является то, что она может срабатывать на каждой строке исходного файла программы (по адресу любой инструкции исполнительного файла программы). Это позволяет следить за значением переменной при исполнении каждой строки исходной программы или остановить выполнение программы,  в  случае если переменная или  область памяти  изменит свое значение. При этом вы можете использовать список задаваемых условий и выполняемых действий и определить , когда задаваемая контрольная точка должна сработать и какое действие при этом должно произойти. Глобальные контрольные точки тестируются перед каждой выполняемой инструкцией, раньше, чем контрольные точки, заданные по однозначным конкретным адресам. Они используются, когда вы хотите непрерывно контролировать их срабатывание по заданному условию.

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

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

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

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

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

Поле Conditionsпозволяет задавать условия, при которых будет срабатывать контрольная точка. Одно из четырех условий задается установкой «•» в выбранной позиции.

Условие Always определяет контрольные точки, которые должны сработать в любом случае, как только она достигается.

Условие Changedmemory позволяет задать область памяти, выход из которой приводит к срабатыванию заданной контрольной точки. Задание этой области осуществляется соответствующим выражением в поле Conditionexpression. Выражение, определяющее область памяти, которую вы задаете, вычисляется каждый раз, когда программа достигает места в исходной программе, где установлена контрольная точка.

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

И, наконец, условие Hardware позволяет задавать условия срабатывания тех контрольных точек, которые определяются для отладки аппаратных устройств системы.

Директивы Add в поле Conditionsand actions позволяют добавить дополнительные условия срабатывания контрольной точки или производимых при этом действий.