### Отладчик(и)

Самый простой способ отладки - это в тексте программы в нужных местах поставить примерно вот такие вызовы:

OUTLOG(__FILE__,__LINE__, var1,var2,....,varn)

и, после выполнения программы, проанализировать содержимое *.log файла. Это помогает, когда ни один из ниже перечисленных отладчиков не помогает.

clip_dbg - отладчик в стиле gdb (gnu debug) умеет тоже, что и остальные отладчики, только сервиса предоставляет ровно столько, сколько может предоставить командная строка без "человеческого" интерфейса.

Чтобы начать отладку при помощи clip_dbg, надо основную программу запустить с ключиком --debug (или --stop для ожидания команды "старт" от отладчика) и с другой консоли запустить clip_dbg <Номер_отлаживаемого_процесса>. Далее для изучения в clip_dbg есть команда help или help <суб_команда>.

Особое внимание на этом отладчике заострять не хочется, но все же его надо иметь ввиду, так как это очень простая программа имеющая минимум "наведенных" глюков. И когда возникает вопрос "глючит программа или отладчик ?" лучше пользоваться этим отладчиком чем более навороченным и приятным :).

clip_cld - отладчик программ, предназначен для интерактивного контроля (пошагового ) выполнения программ и просмотр текущих состояний переменных. Выполнен в стиле стандартного CLD из поставки CA-Clipper.

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

! Кто привык пользоваться опцией "Монитор", ищите его в пункте меню "View | Смотреть" - этот монитор существенно изменился.

#### script-файлы

Script-файлы содержат команды в той форме, в которой они вводятся в окне команд. По умолчанию эти файлы имеют расширение CLD.

Скрипт-файлы можно создавать обычным текстовым редактором. Считается что одна строка в таком файле - одна команда.

Запуск скрипта производится командой INPUT (УПРАВЛЕНИЕ) "имя_файла" или сокращенно I (У) "имя_файла". Задать стартовый скрипт можно при запуске отладчика указанием имени файла в системной командной строке - clip_cld @cript_file.cld. Скрипт с именем init.cld, находящийся в текущем каталоге, будет вызван и исполнен автоматически.

#### Команды

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

Формат команды | Эквиваленты | Описание команды
--- | --- | ---
connect | co | Производит подключение к отлаживаемой программе
? <выражение> | ?? | Выводит результат выражения или переменной
! <имя_переменной> | !! | Выводит значение переменной, в том числе и объявленной как local
animate | анимация,A,А | Запускает программу в режиме анимации
BREAKPOINT номер_строки [имя_файла] | B,BP,ТО | Устанавливает точку останова на строке в файле.
CALLSTACK ON|OFF | C,ВЫЗОВ | Включает или выключает окно стека вызовов
DELETE ALL BP|TP|WP | D, УДАЛИТЬ | Удаляет все точки останова или трассировки или просмотра
DELETE BP|TP|WP номер_точки | D, УДАЛИТЬ | Удаляет указанную точку останова или трассировки или просмотра
DOS | OS | Вызывает операционную систему
FIND [искомая_строка] | F,ПОИСК | Осуществляет в окне редактора поиск указанной строки или запускает диалог для указания параметров поиска
GO | ПУСК | Запускает отлаживаемую программу "без остановок"
GOTO [номер_строки] | G, ПЕРЕХОД | Переводит курсор в окне редактора на указанную строку или запускает диалог для точного указания параметров перехода.
HELP | H,ПОМОЩЬ | Вызывает окно помощи,скорее всего это будет вот этот самый текст.
INPUT имя_файла.cld | I,УПРАВЛЕНИЕ | Выполняет указанный скрипт-файл с командами.
LIST BP|TP|WP | L,СПИСОК | Выводит список точек останова, трассировки, просмотра
NEXT | N,СЛЕДУЮЩЕЕ | Продолжает поиск по последним введенным правилам
NUM ON|OFF | НУМЕРАЦИЯ | Включает или отключает режим нумерации строк в окне редактора.
OUTPUT | O,ЭКРАН | Показывает экран отслеживаемой программы
PREV | P,ПРЕДЫДУЩЕЕ | Производит поиск в обратную сторону в окне редактора
QUIT | Q,КОНЕЦ | Закончить процесс отладки
RESTART | R,РЕСТАРТ | Перезапускает отлаживаемую программу
RESUME | ИСХОДНОЕ | Данная команда не поддерживается, так как отладчик может одновременно открывать несколько окон редакторов и позволяет между ними переключатся. Но и считать эту команду ошибочной отладчик не будет
SPEED задержка | СКОРОСТЬ | Устанавливает скорость анимации в десятых долях секунды и определяет паузу между выполняемыми операторами
STEP | S,ШАГ | Выполняет одну строку отлаживаемой программы
TP выражение | T,ТТ,TRACEPOINT | Устанавливает точку трассировки для "выражение". "Выражение" может быть просто именем переменной.
VIEW [имя_файла] | V,ЗАГРУЗИТЬ | Загружает файл в новое окно редактора, или вызывает диалог для выбора файла.
WP выражение | W,ТЗ,VIEWPOINT | Добавляет "выражение" в окно просмотра
CONNECT имя_процесса | номер_процесса | CO | Подключится к процессу
# | *,rem | Комментарий в скрипт-файле

#### Окна

На экране может быть одновременно несколько окон:

- Окно команд - предназначено для ввода команд и отображения результатов их выполнения. Всегда открыто, но не всегда видимо. Принимает команды отладчика как вводимые строки и отображает результаты их выполнения (если таковые имеются). Команды вводятся при помощи клавиатуры и выполняются после нажатия ENTER. Команды могут вводится независимо от того какое окно активно, но курсор виден только при активном окне команд. При активном окне команд клавиши управления курсором "вверх" и "вниз" могут использоваться для просмотра и исполнения предыдущих команд.
- Окна редактора - автоматически открываются при переходе из файла в файл или по команде VIEW. Строка программы, содержащая текущий выполняемый оператор, отображается выделенным цветом. Те строки, на которых есть точки остнова, также маркируются.
- Окно просмотра - отображает точки трассировки и их текущие значения. Открывается при задании хотя бы одной точки через меню или команды BP,TP,WP. Если активно окно просмотра, то по клавише ENTER производится редактирование значения выражения.
- Окно монитора - отображает имена и значения переменных указанного класса памяти. Открывается через меню или команду MONITOR. При активном окне монитора при нажатии клавиши ENTER производится редактирование значения переменной.
- Окно стека вызовов - отображает стек вызовов подпрограмм.
- Окно текущих установок SET - отображает таблицу текущих значений, возвращаемых функцией SET.
- Окно просмотра информации об открытых БД.

В каждый момент активно только одно окно, выделенное рамкой повышенной яркости. Назначение/переключение активного окна производится клавишами Tab или Shift+Tab.

У каждого окна в правом верхнем углу указан его номер, по которому можно быстро переключатся при помощи клавиш Alt+1,Alt+2,...Alt+n по номеру окна. Указанные клавиши работают только в режиме скан-клавиатуры. Если используется режим ANSI-терминала, то должны работать клавиши Ctrl+Enter+1, ....

Пункт меню "окна" содержит команды по управлению размерами и количеством окон на экране.

К сожалению произвольное управление размерами окон на сегодня не реализовано, так как стандартные функции по управлению окнами из библиотеки CA-Tools этого не позволяют.

#### Клавиши управления

Все клавиши, описанные в данном документе - это те которые установлены по-умолчанию и описаны в файле из дистрибутива tools/hotkeys.prg. Для удобства пользователей все клавиши можно переназначить аналогично как и в tools/hotkeys.prg. Достаточно создать файл $HOME/.clip/keymaps.prg, описать в нем горячие клавиши и соответсвующие им команды, скомпилировать этот файл с ключиком -p. Более подробно о назначении горячих клавиш читайте (пока нет места где об этом можно почитать - лучше загляните в tools/hotkeys.prg и вы все поймете).

© Ю.Хныкин, uri@itk.ru , 2000