Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отладчик программ AFD.doc
Скачиваний:
254
Добавлен:
08.03.2015
Размер:
163.33 Кб
Скачать

3. Контрольные точки

3.1. Формат экрана контрольных точек

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

Установка контрольных точек реализуется на специальном экране. Для включения этого экрана необходимо воспользоваться "горячей клавишей" строки-подсказки F9 Set BRK (установка контрольных точек). В результате этих действий рабочий экран (рис. 1) заменяется на экран контрольных точек, формат которого приведен на рис. 2.

B R E A K P O I N T E N T R Y M E N U

BR# Break ADR Condition Count Occur Action

1 CS:0 .................................... 0 0

2 CS:0 .................................... 0 0

3 CS:0 .................................... 0 0

4 CS:0 .................................... 0 0

5 CS:0 .................................... 0 0

6 CS:0 .................................... 0 0

7 CS:0 .................................... 0 0

8 CS:0 .................................... 0 0

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

| Disassembler window address > |

|------------------------------------------------------------------------------|

| 24CF:0107 FF76FE PUSH [BP-02] |

| 010A 9A6281F113 CALL 13F1:8162 |

| 010F 83C402 ADD SP,0002 |

| 0112 B80D00 MOV AX,000D |

| 0115 50 PUSH AX |

| 0116 9A7481F113 CALL 13F1:8174 |

| 011B 83C402 ADD SP,0002 |

| 011E 803EDE4A03 CMP [4ADE],03 |

| 0123 7C13 JL 0138 |

|------------------------------------------------------------------------------|

1View Trace 3Read Setup 4 Help 5Main Menu 7Save Setup 8Disas.Window 9Clear

Рис.2. Экран контрольных точек.

Экран контрольных точек содержит два окна: окно меню контрольных точек (BREAKPOINT ENTRY MENU) и окно дизассемблера (DISASSEMBLER WINDOW). Переключение между окнами реализуется "горячей клавишей" F8. Функции этой клавиши, а также ряда других, перечислены в строке-подсказке нового экрана.

3.2. Окно контрольных точек

Основным окном рассматриваемого экрана является окно контрольных точек BREAKPOINT ENTRY MENU . Левая колонка BR# этого окна содержит номера контрольных точек от 1 до 8. (Заметим, что отладчик поддерживает еще одну, нулевую точку BR0, которая является точкой останова и задается командной строкой отладчика G согласно п. 2.2.). Следующая колонка BREAK ADR устанавливает адрес контрольной точки в формате сегмент:смещение. Содержимое этой колонки определяется пользователем.

В процессе реализации вычислений программа периодически "натыкается" на контрольные точки. При этом в каждой точке происходит прерывание программы отладчиком. "Перехватив инициативу", отладчик выполняет ряд действий, задаваемых пользователем. Для управления этими действиями служат колонки Condition, Count, Occur и Action рассматриваемого окна.

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

Таким образом, можно считать, что контрольная точка пропускается отладчиком, если не соблюдается условие Occur=Count. При этом для гарантированного выключения контрольной точки достаточно установить Count=0, т.к. при первом же прохождении программы через соответствующую точку величины Occur примет значение 1.

Если величина Count отлична от нуля, то после ряда "холостых" прохождений программы через контрольную точку наступает ситуация Occur=Count. В этом случае отладчик приступает к анализу соответствующей строки Condition рассматриваемого окна. Указанная строка формируется пользователем и задает условия активации контрольной точки в ситуации Occur=Count.

Условия активации записываются логическими выражениями типа :

REG=value - проверка состояния регистра;

[REG]=value - проверка состояния ячейки памяти сегмента DS,

адресуемой косвенно через регистр;

OFFSET=value- проверка состояния ячейки памяти сегмента DS, адресуемой прямо смещением OFFSET.

Seg:[REG]=value,

Seg:OFFSET=value

- аналогичны предыдущим двум выражениям, но сегменты ячеек памяти задаются параметром Seg;

BRn - проверка активации контрольной точки n.

Здесь величина value задает некоторое значение HEX-формата, в котором может быть неопределен ряд цифр. Неопределенные цифры обозначаются символом 'x'.

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

AX=0, AL=0x, CS;[SI]=xF, 100:3560=1234, BR2 и т.п.

Для активации контрольной точки необходимо соблюдение ВСЕХ условий строки Condition. Если строка пуста, то для активации контрольной точки достаточно соблюдения условия Occur=Count.

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

S - остановить программу; для продолжения вычислений необходимо дать команду G в окно CMD рабочего экрана.

C - подсчитывать количество активации точки.

Rn,m...- сбросить состояние Occur контрольных точек n,m и др.

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

T ON IN - включить трассировку процедур обработки прерываний

T OFF - выключить режим трассировки.

Кроме того, в момент активации контрольной точки отладчик выставляет в окно ассемблера рабочего экрана краткое сообщение об этом событии. Сообщение имеет вид "BRn", где n - номер активной контрольной точки.