Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Глава 10. Трассировка и отладка

В разделах "Что произойдет, если вы сделаете синтаксическую ошибку?"

и "Трассировка вашей программы" Главы 2 приводится небольшой пример по

отладке программы на Турбо Прологе. В этой главе мы более глубоко изучим

различные инструменты Турбо Пролога, предназначенные для отладки прог-

рамм. Эти средства делятся на четыре основные категории: синтаксический

контроль, средство трассировки, директивы компилятора и сообщения об

ошибках во время исполнения.

Синтаксический контроль: синтаксический контроль Турбо Пролога рабо-

тает в совокупности со встроенным редактором. Когда вы пытаетесь компили-

ровать программу, исходный код которой содержит синтаксическую ошибку,

система выдаст сообщение об ошибке в окне редактора и расположит курсор

на месте ошибки.

Трассировка: Турбо Пролог также поддерживает много различных средств

трассировки, что позволяет:

- выполнять вашу программу по шагам;

- устанавливать точки трассировки для пошагового выполнения некото-

рых частей программы;

- трассировать только те предикаты, которые вы указали;

- выполнять трассировку в режиме оптимизации;

- включать и выключать трассировку в диалоговом режиме;

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

или в файл.

Директивы компилятора: третьей формой отладки в Турбо Прологе явля-

ется группа директив компилятора, которые позволяют задавать тип и уро-

вень обнаружения ошибок, а также отчетную информацию, которую компилятор

выдает во время трансляции вашей программы, включая:

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

ложения;

- список предикатов в вашей программе, а также их область действия,

размер, типы аргументов и поток параметров, если они используются

и являются определенными.

Ошибки времени выполнения: четвертым средством Турбо Пролога для на-

хождения ошибок в ваших кодах является сообщение об ошибках времени вы-

полнения. После того как ваша программа успешно скомпилирована, ошибки

могут возникнуть только при ее работе. Если это произодет, то программа

сообщит номер ошибки времени выполнения и место ее возникновения. В слу-

чае наличия файла PROLOG.ERR, программа также выдаст сообщение об ошибке,

показывающее, что произошло при работе программы.

Как программист, вы должны знать, что ошибки времени выполнения

очень трудно отслеживать. Так как логика программы не может быть пол-

ностью протестирована, пока нет фактической работы, в целях облегчения

отладки вашей программы в Турбо Прологе имеются средства вывода информа-

ции об ошибках времени выполнения.

Для проверки и тонкой настройки вашей программы эти четыре средства

отладки можно различным образом сочетать. В этой главе объясняется, как

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

эти средства могут помочь при разработке программы.

Синтаксическая проверка

Перед выполнением программы компилятор прежде всего проверяет код

программы на соответствие синтаксису Турбо Пролога. При этом система

всегда проверяет, чтобы значения различных типов доменов не перемешива-

лись. Как показано в Главе 2, при обнаружении системой ошибки, она возв-

ращает управление редактору и располагает курсор в том месте программы,

где была найдена ошибка.

При выводе сообщения о синтаксической ошибке в коде вашей программы,

Турбо Прологом наряду с номером ошибки, выдается сообщение об ошибке (ес-

ли присутствует файл PROLOG.ERR ). Если вы не сообщение об ошибке остает-

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

рых возникает данная ошибка, нажмите клавишу F1. При этом вы получите до-

полнительную информацию по данной конкретной проблеме. Большинство сооб-

щений об ошибках снабжены дополнительным справочным текстом, в котором

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

зом можно ее устранить. (Подробные описание сообщений об ошибках Турбо

Пролога содержится в Приложении "Сообщения об ошибках" в "Справочном ру-

ководстве по Турбо Прологу".)

Когда вы отредактируете программу и захотите продолжить компиляцию,

нажмите клавишу F10. При этом Турбо Пролог возобновит компиляцию програм-

мы. Если имеются другие ошибки, то он снова вернет управление редактору.

В противном случае трансляция будет завершена и система спросит вас что

делать дальше.

Пример

Загрузите следующую программу в редактор Турбо Пролога и скомпили-

руйте ее.

/* Программа CH10EX01.PRO -

Пример синтаксической ошибки */

domains

list = integer*

predicates

make_list (integer, list, list)

goal

make_list (1, [1,2], New_List).

clauses

make_list (Head, List, [Head,List]).

Files Edit Run Compile Option Setup

╔══════════════════ Editor ══════════════╗┌────── Dialog ──────┐

║Error Correction Line18 Col33 C:EXAMPLES║│ │

║ ║│ │

║predicates ║│ │

║ make_list( integer, list, list) ║│ │

║goal ║│ │

║ make_list( 1, [1,2], New_List). ║│ │

║clauses ║│ │

║ make_list(Head, List, [Head,List]). ║│ │

║ ║│ │

║505 Type error: Illegal variable type ║│ │

║for this position. ║│ │

╚════════════════════════════════════════╝└────────────────────┘

┌─────────── Massage ──────────┐┌──────────── Trace ───────────┐

│Load WORK.PRO ││ │

│Load C:EXAMPLES\CH10EX01.PRO ││ │

│Compiling C:EXAMPLES\CH10EX01.││ │

└──────────────────────────────┘└──────────────────────────────┘

F1:Error explanation F2-Save F3-Load F5-Zoom F6-Next F10-Continue

────────────────────────────────────────────────────────────────

Рисунок 10.1 Синтаксическая проверка

Такие ошибки, как в этой программе, программистам очень трудно обна-

ружить. Их также трудно обнаружить при трассировке. Однако этот тип оши-

бок можно просто обнаружить с помощью средства проверки соответствия ти-

пов.

Соседние файлы в папке Документация