Google

Отладчик(и)

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

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