Самый простой способ отладки - это в тексте программы в нужных местах поставить примерно вот такие вызовы:
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 производится редактирование значения
переменной.
В каждый момент активно только одно окно, выделенное рамкой повышенной
яркости. Назначение/переключение активного окна производится клавишами 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 и вы все поймете).