23 | 07 | 2017

Глава 8. Отладчик Clipperа

Глава содержит информацию, необходимую для использования
отладчика, встроенного в Clipper. Рассмотрены следующие темы :

- что такое отладчик Clipperа

- как прикомпоновать к программе отладчик

- как пользоваться отладчиком

- переходы внутри отладчика

- выборы в меню отладчика

Что такое отладчик Clipperа

Отладчик создан для помощи в поиске ошибок или "клопов"

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

Вы можете

- выполнить программу как обычно или шаг за шагом

- увидеть состояние программной среды (команд SET)

- увидеть структуру активных файлов базы данных

- посмотреть значение выражения

- посмотреть индексный номер и ключевое выражение

- посмотреть структуру базы данных

- посмотреть области и выражения, по которым установлены
родственные отношения

- увидеть общий вид базы данных

- просмотреть глобальные и локальные переменные и их значения

- создать или изменить значение любой глобальной или локальной
изменяемой

- назначить точки останова

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



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



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

В этой главе предполагается, что Clipper инсталлирован в
директории "CLIPPER" и путь поисков DOSа содержит этот директорий.
При этом Вы можете вызывать линкер, находясь в любом директории и
линкер будет искать файлы DEBUG.OBJ и CLIPPER.LIB в директории
"CLIPPER".

Важное замечание : Если вы компилируете с опцией "без номеров
строк" (-L), то отладчик не сможет работать. Поэтому не пользуйтесь
этой опцией до окончания отладки программы.

Использование линкера PLINK86-Plus

- 225 -

Чтобы скомпоновать Вашу программу (для примеров использован файл
TEST.OBJ ) с отладчиком введите следующую строку :

C>PLINK86 FI TEST,\CLIPPER\DEBUG LIB \CLIPPER\CLIPPER

Пакетный файл CLD.BAT, включенный в дистрибутив, автоматически
прикомпоновывает отладчик.

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

Использование линкера DOS

Чтобы скомпоновать файл TEST.OBJ с отладчиком с помощью линкера
DOSа, введите следующую строку :

C>LINK TEST+\CLIPPER\DEBUG,TEST,,\CLIPPER\CLIPPER


Как пользоваться отладчиком




При запуске программы с отладчиком, DOS загружает программу в
память и на экране появляется следующая информация :

????????????????????????????????????????????????????????????????????
? Control Display Variable Help Break Watch Step ?
? ????????????????????????
? ?Proc TEST ??
? ?Line 2 ??
? ?Break points <off> ??
? ????????????????????????
? ?
? ?
? ?
? ?
? ?
? ?
? ?
????????????????????????????????????????????????????????????????????
Рисунок 8-1. Главное меню отладчика


В главном меню есть семь выборов, некоторые из которых имеют
свои подменю. Рамка справа называется смотровой и, по умолчанию,
показывает имя активной процедуры (справа от слова "Proc"), номер
текущей строки, в данном случае - 2, и состояние системы точек
останова. Дополнительно можно установить до 16 выражений и проследить
за ними. Эта способность более подробно объяснена в разделе
Смотрового меню.


Переходы внутри отладчика

- 226 -


Меню

Используйте клавиши стрелок для перехода из одного меню в
другое. Стрелки влево и вправо позволяют перейти из одного подменю в
другое без возврата в главное меню. Клавиши Home и End переносят Вас
на первый и последний выборы меню, соответствено. Если на экране
светится слово "WAITING", то нажатие любой клавиши возвращает в
главное меню; если нет, то нажатие клавиши Esc возвращает Вас на один
уровень вверх.

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

Списки процедур и синонимов

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

Таблица 8-1. Движение по спискам синонимов и процедур
---------------------------------------------------------------------
клавиша переходит на
---------------------------------------------------------------------
Стрелка_вверх предыдущий элемент
Стрелка_вниз последующий элемент
Home первый элемент списка
End последний элемент списка
PgUp предыдущую страницу - светящаяся строка остается
на той же строке экрана
PgDn следующую страницу - светящаяся строка остается
на той же строке экрана или на последней,
содержащей информацию
Ctrl-PgUp первый элемент на первой странице
Crtl-PgDn последний элемент на последней странице
---------------------------------------------------------------------



Отображение информации

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

Таблица 8-1. Движение по спискам синонимов и процедур
---------------------------------------------------------------------
клавиша действие
---------------------------------------------------------------------
Стрелка_вверх прокрутка на одну строку вверх
Стрелка_вниз прокрутка на одну строку вниз
PgUp прокрутка на одну страницу вверх
PgDn прокрутка на одну страницу вниз
Ctrl-PgUp переход на первую страницу
Crtl-PgDn переход на последнюю страницу

- 227 -
---------------------------------------------------------------------

Внутри окон в двойной рамке можно двигаться с помощью клавиш
управления курсором.


Выборы в меню отладчика


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

Меню управления


????????????????????????????????????????????????????????????????????
? Control Display Variable Help Break Watch ?
? ?????????????????? ????????????????????????
? ? Go ? ?Proc TEST ??
? ? Go (animation) ? ?Line 2 ??
? ? Go (key) ? ?Break points <off> ??
? ? Single Step ? ????????????????????????
? ? DOS Shell ? ?
? ? Break Toggle ? ?
? ? Quit ? ?
? ?????????????????? ?
? ?
? ?
? ?
????????????????????????????????????????????????????????????????????
Рисунок 8-2. Меню управления


Go :2 0Передает управление программе и она работает без
вмешательства отладчика до тех пор, пока не встретится
точка останова, случится ошибка исполнения или Вы
вызовете отладчик нажатием Alt-D.

Go При переходе к следующей строке показывает смотровое
(animation) окно. В остальном действует также как и GO. Чтобы
замедлить показ смотрового окна (чтобы оно не
мелькало), добавьте INKEY(вырЧ)2 0в качестве одного из
выражений в меню Watch. Для примера, INKEY(.1) вызовет
задержку приблизительно в 1/10 секунды на каждую
строку программы.

Go (key) : Выполняет программу без вмешательсьва отладчика после
того, как нажата любая клавиша. Это позволяет вставить
символ в буфер клавиатуры. В остальных аспектах
действует также как GO.
2 0
DOS Shell : Загружает копию COMMAND.COM. Это дает доступ к
командному процессору DOS. Можно запустить любую
программу (ограничение только по размеру свободной
памяти). Для возврата в отладчик введите с приглашения
DOSа команду "EXIT".


- 228 -
Break Система точек останова автоматически включается при
Toggle : определении хотя бы одной точки. Этот пункт меню
позволяет включать и выключать систему. Текущий статус
системы показан в смотровом окне. Точки останова можно
индивидуально включать и выключать через Break меню.

Quit : Закрывает все файлы и возвращает Вас в DOS.



Меню отображения



????????????????????????????????????????????????????????????????????
? Control Display Variable Help Break Watch ?
? ?????????????? ????????????????????????
? ? Expression ? ?Proc TEST ??
? ? Trace ? ?Line 2 ??
? ? Status ? ?Break points <off> ??
? ? Database ? ????????????????????????
? ?????????????? ?
? ?
? ?
? ?
? ?
? ?
? ?
????????????????????????????????????????????????????????????????????
Рисунок 8-3. Меню отображения

Expression : Вычисляет и показывает выражения. Когда введено годное
выражение, показывается его текущее значение. Для
возврата в меню нажмите Esc.

Trace : Показывает имя текущей процедуры и имена всех
программ, процедур и функций, выполненных до
достижения текущей строки активной процедуры.
Последняя выполненная процедура указана первой.

Status : Показывает текущий статус большинства комманд SET.

Database : Показывает на экране два информационных окна и список
активных функциональных клавиш. В левом окне - список
синонимов активных баз данных. Можно выбирать файл,
используя стрелки вверх и вниз, подсветив нужный. Если
нет активных баз данных, то внизу окна синонимов
появляется сообщение "WAITING".

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

F1 - Дает общий вид выбранной базы данных - номер индекса,
Overview номер текущей строки, статус конца файла, и т.д.

F2 - Показывает файлы баз данных связанных с выбранным, и

- 229 -
Relations текущее значение связывающего выражения.

F3 - Показывает номер и ключевое выражение для индексов
Indexes выбранной базы данных.

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

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


Меню переменных

????????????????????????????????????????????????????????????????????
? Control Display Variable Help Break Watch ?
? ?????????????????? ????????????????????????
? ? Assign Private ? ?Proc TEST ??
? ? Assign Public ? ?Line 2 ??
? ? View Privates ? ?Break points <off> ??
? ? View Publics ? ????????????????????????
? ?????????????????? ?
? ?
? ?
? ?
? ?
? ?
? ?
????????????????????????????????????????????????????????????????????
Рисунок 8-4. Меню переменных


Assign Позволяет создать или изменить локальные или
Private/ глобальные переменные для текущей процедуры. Отладчик
Public спрашивает у Вас имя и новое значение изменяемой.
Нажатие клавиши Esc возвращает в меню переменных.

View Private: Показывает два информационных окна в середине экрана.
Левое окно содержит список активных процедур, текущая
указана первой. В правом окне показаны имена, типы и
содержимое локальных переменных для выбранной в левом
окне процедуры. Стрелка вправо активизирует правое
окно, позволяя горизонтальную прокрутку. Нажатие
клавиши Esc возвращает в меню переменных.

View Public : Показывает имена, типы и содержимое глобальных
переменных. Если глобальные переменные еще не
объявлены, внизу экрана полявляется сообщение
"WAITING". Нажатие клавиши Esc возвращает в меню
переменных.



- 230 -
Меню подсказки

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

????????????????????????????????????????????????????????????????????
? Control Display Variable Help Break Watch ?
? ???????????????????????????????????????
? ? Control ??Proc TEST ??
? ? Display ??Line 2 ??
? ? Variable ??Break points <off> ??
? ? Help ?????????????????????????
? ? Break ? ?
? ? Watch ? ?
? ? Speed Keys ? ?
? ? About ? ?
? ??????????????? ?
? ?
? ?
????????????????????????????????????????????????????????????????????
Рисунок 8-5. Меню подсказки.



Меню точек останова


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

????????????????????????????????????????????????????????????????????
? Control Display Variable Help Break Watch ?
? ????????????????????????
? ?Proc TEST ??
? ?Line 2 ??
? ?Break points <off> ??
? ????????????????????????
? ??????????????????????????????????????????????????????????????? ?
? ? ? ?
? ?? Toggle Line Expression Delete ??????????????????????????? ?
? ?
? ?
? ?
? ?
????????????????????????????????????????????????????????????????????
Рисунок 8-6. Меню точек останова.



Toggle : Можно выключить отдельные точки останова. Введите
номер отключаемой точки и нажмите Return. Для
отключения сразу всех точек используйте пункт Break
Toggle в меню управления.

- 231 -

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

Expression : Введите имя процедуры и логическое выражение,
определяющее точку останова. Когда выражение станет
истинным клиппер-программа остановится. Если вместо имени
процедуры сразу нажать Return, то будет принято имя
текущей процедуры.

Delete : Удаляет точки останова. Введите номер удаляемой точки
и нажмите Return.



Смотровое меню


По умолчанию, смотровое окно показывает имя текущей процедуры,
номер строки и статус системы точек останова. К ним Вы можете
добавить до 16 выражений для слежения за ними. Выражения могут быть
любого типа. В смотровом окне показываются только 20 первых символов
вычисленного выражения. Если выражение становится неопределенным,
появляется сообщение "<undefined>".

????????????????????????????????????????????????????????????????????
? Control Display Variable Help Break Watch ?
? ??????????????????????? ????????????? ?
? ?Proc TEST ? ? Toggle ? ?
? ?Line 2 ? ? Set ? ?
? ?Break points <off> ? ? Move ? ?
? ??????????????????????? ????????????? ?
? ?
? ?
? ?
? ?
? ?
? ?
? ?
????????????????????????????????????????????????????????????????????
Рисунок 8-7. Смотровое меню


Toggle : Включает и выключает смотровое окно.

Set : Определяет и поддерживает наблюдаемые выражения.

Toggle : Включает и выключает наблюдение за конкретным
выражением. Введите номер нужного выражения и нажмите
Return. Выключенные выражения помечаются как "<off>".


- 232 -
Add : Можно добавить новые выражения, введя их и нажав
Return.

Delete : Удаляет выражения. Введите номер удаляемого выражения
и нажмите Return.

Move : Передвигает смотровое окно с одной стороны экрана на
другую.


Пошаговое меню

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