Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

ГЛАВА 11
| << | < | > | >>

ГЛАВА 11
ОТЛАДЧИКPAL


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

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

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

ЗАПУСК ОТЛАДЧИКА


Существуют четыре способа запуска отладчика:

  1. Если в процессе выполниния скрипта произойдет ошибка, на экране будет высвечено меню:

Cancel Debug


Begin debugging script.

Войти в редактор можно, выбирая из него опцию Debug. При этом текущей командой редактирования будет команда, в которой обнаружена ошибка. Вспомните, что в главе 7 были описаны 2 типа ошибок, детектируемых PAL:

  • Синтаксические ошибки (неправильно написанные команды PAL). Обычно они вызваны неправильным написанием ключевых слов, пропуском или неправильным расположением аргументов.
  • Ошибки выполнения, происходящие, когда по тем или иным причинам невозможно выполнение правильно написанных команд.

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

2. Если в скрипт включена команда Debug, то в результате ее обработки вы войдете в режим редактирования. При этом текущей командой будет команда, следующая за Debug.

3. Для прерывания выполнения скприпта следует нажать {Ctrl}{Break}. Будет высвечено меню Script/Error. Для входа в редактирование выберите опцию Debug. Текущей командой будет команда, следующая за той, что была выполнена последней перед прерыванием.

4. Войдите в меню PAL ({Alt}{F10}), а затем выберите опцию Debug. После этого введите имя редактируемого скрипта. Текущей командой будет первая команда скрипта.

Первые три метода позволяют вам редактировать выполняемый скрипт.

РАБОТА С ОТЛАДЧИКОМ


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

Кроме выполнения инструкций отлаживаемого скрипта вы можете управлять системами PAL и Paradox с помощью меню ситсемы Paradox {F10} или меню отладчика {Alt}{F10}.

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


| Script A
| .
| .
| .
| Choice = B(x)
| .
| .
| .
Уровень 1 | Proc B(x)
               |      .
               |      .
               |      .
               | Play C
               |      .
               |      .
               |      .
           Уровень 2   ------------------------------------------
                      |   Script  C
                      |          .
                      |          .
                      |          .
                      |       [Field] = [Field]*2.0
                      |          .
                      |          .
                      |          .
                  Уровень 3           ---------------------------
                                      | Script Error
                                      | [not in Edit mode]
                                      |
                                      |
                                      |
                                      |
                                      |

Рис.11-1. Уровни вложения скриптов.

Уровни отладки


С помощью отладчика PAL можно отлаживать вложенные скрипты и процедуры. Предположим, выполнение вашей прикладной системы начинается со скрипта А (уровень 1), который обращается к процедуре В (уровень 2), запускающей скрипт С (уровень 3), который содержит ошибку. Как показано ра рис. 11-1, каждый раз, когда происходит оброащение к процедуре или запускается скрипт, уровень отладки возрастает на единицу. Каждый раз при завершении выполнения скрипта или процедуры происходит уменьшение уровня отладки на единицу.Заметьте, что при работе в режимах Value или MiniScript из меню отладчика уровень отладки тоже увеличивается на единицу.

Отладка длится до тех пор, пока работает скрипт или процедура первого уровня, или пока вы не покинули отладчик. Часто бывает важно знать текущий уровень отладки. Для этого можно воспользоваться опцией Where?.

Опция Рор применяется для того, чтобы покинуть текущий уровень отладки и перейти на один уровень выше. Оба эти средства описаны ниже в этой главе.

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

Отладка библиотечных процедур


Если отлаживаемый скрипт обращается к процедуре, содержащейся в библиотеке, то первоначальный текст этой процедуры должен быть доступен PAL. Чтобы сделать его доступным, необходимо, чтобы скрипт, содержащий определения процедуры, был в наличии в том каталоге, из которого он был первоначально записан в бибилиотеку.

Экран отладчика


Если вы находитесь в отладчике, вы сразу это заметите, так как при этом в нижних двух строках экрана высвечивается информация о выполнении скрипта:

  • "Строка состояния" указывает имя выполняемого скрипта и номер текущей строки. Заметьте, что текущий скрипт не обязательно должен совпадать с запущенным вами скриптом, а может быть вложен в него.
  • "Строка скрипта" является текущей строкой выполняемого скрипта. Так как она может содержать несколько команд, вы полняемых последовательно, то на выполняемую в данный момент команду указывает курсор отладчика - стрелка. Если в выполняемой команде встретилась ошибка, стрелка будет мигать.

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

Строка состояния

            |
            v

Script: testScrp Line 3
Menu X sqrt("String") >> (View) (Orders)

     ^                       ^
     |                       |

"строка скрипта" курсор отладчика

Рис. 11-2. Экран отладчика.

Клавиши отладчика


Таблица 11-1. содержит функциональные клавиши, используемые отладчиком. Кроме клавиши {Alt}{F10}, высвечивающей меню отладчика, все остальные клавиши дублируют режимы меню. Эти режимы описаны ниже в настоящей главе. Функциональные работают только когда отладчик активен.

Табл. 11-1. Функциональные клавиши отладчика


Клавиши Функция


     {Ctrl}{E}                 Редактирование скрипта
     {Alt}{F10}                Высвечивание меню отладчика
     {Ctrl}{P}                 Изменение уровня отладки
     {Ctrl}{G}                 Повторный запуск скрипта
     {Ctrl}{N}                 Пропуск текущей команды скрипта
     {Ctrl}{S}                 Выполнение текущей команды
     {Ctrl}{W}                 Текущий уровень отладки
     {Ctrl}{Q}                 Выход из отладчика

Меню отладчика


Меню отладчика выглядит так:

Value Step Next Go MiniScript Where? Quit Pop Editor


Calculate the value of an expression.

Оно может быть вызвано с помощью клавиш {Alt}{F10} в любой момент времени, если отладчик активен. Меню имеет 9 режимов:

  • Value: вычисление величины выражения или переменной.
  • Step: выполнение текущей команды скрипта.
  • Next: пропуск текущей команды скрипта и переход к следующей.
  • Go: повторный запуск скрипта.
  • MiniScript: построение и запуск короткого скрипта.
  • Where?: указание уровня вложения текукщего скрипта или процедуры.
  • Quit: выход из отладчика.
  • Pop: остановка текущего скрипта и переход на один уровень вложения вверх.
  • Editor: редактирование текущего скрипта.

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

Команда Value


Функция Value, камк и ее тезка в меню PAL (см. главу 8) является мощным калькулятором, с помощью которого можно определить значение любого выражения PAL. Когда вы активизируете эту функцию, PAL попросит вас ввести выражение, значение которого необходимо определить:

Expression:
Enter expression to calculate.

Можно ввести выражение длиной до 175 символов, используя {Alt}{F5} или {Ctrl}{F} для просмотра и редактирования выражения (см. раздел "Просмотр поля" в главе 2 руководства пользователя системы Paradox. Версии 1.0 и 1.1 поддерживают выражения длиной до 50 символов.).

После нажатия клавиши {Enter} PAL вычисляет и высвечивает величину выражения в окне сообщений в правом нижнем углу экрана. Сообщение будет сохраняться до тех пор, пока вы не нажмете следующую клавишу.

Функция Value полезна для выяснения того, является ли данная переменная, элемент массива или выражение причиной ошибки.Ес- ли текущий отлаживаемый объект является процедурой, вы можете выяснить значения ее формальных параметров и ограниченных перменных.

Ниже приведено несколько примеров выражений, значения которых можно вычислить таким образом:

  • x, для выяснения значения переменной x;
  • NKEYFIELDS(TABLE()) для выяснения числа ключевых полей текущей таблицы рабочей области;
  • TIME() для выяснения, когда начинается перерыв на ланч.

Как и режим PALMenu/Value, режим Debug/Value запускает короткий скрипт с именем value, содержащий команду:

RETURN expression

где expression - выражение, которое необходимо вычислить. Таким образом, использование режима value само по себе может привести к ошибке, если выражение содержит синтаксическую ошибку или неприсвоенную переменную. В этом случае вы, находясь в режиме отладки, еще раз перейдете в режим отладки. В сторке состояния будет высвечено имя отлаживаемого скрипта - value, а строкой ниже - ошибочное выражение. В этом случае вы можете:

  • нажать клавиши {Ctrl}{P} (Pop) для возвращения к скрипту, который отлаживался ранее;
  • в режиме MiniScript испавить ошибочное выражение.

Команда Step


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

Информация, которая высветится при покомандном исполнении скрипта, будет зависеть от того, какой вид команд вы используете:

  • Команды, делающие изменения в рабочей областе или выполняющие ввод и вывод, будут производить видимые изменения на вашем экране.
  • Другие команды, такие, как присвоение величин переменым, приведут лишь к изменению положения курсора отладчика (из- меннение значения переменной можно обнаружить с помощью команды Value).
  • При обработке определения процедуры вы будете видеть лишь ее заголовок (команду PROC). Позже, при обращении к процедуре, вы будете видеть ее выполнение покомандно.
  • При обработке команды EXECUTE каждая команда скрипта EXECUTE будет обрабатываться отдельно.

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

Если вы вошли в отладчик из-за синтаксической ошибки, режим Step использовать нельзя. Необходимо исправить ошибку и запустить скрипт сначала.

Команда Next


При выборе режма Next или нажатии {Ctrl}{N} текущая команда пропускается,и курсор отладчика перемещается к следующей команде. С помощью этого режима можно пропустить команду, вызвавшую ошибку исполнения. Можно также запустить минискрипт для того, чтобы исправить ошибку перед тем, как запустить скрипт снова. Не забывайте исправлять ошибочную команду перед повторным запуском скрипта. Как и с помощью Step, с помощью Next нельзя пропустить команду, вызвавшую синтаксическую ошибку.

Команда Go


Команда Go или клавиша {Ctrl}{G} предназначены для повторного запуска скрипта, начиная с текущей команды. Если текущая команда принадлежит вложенному скрипту, то выполнение продлится до завершения самого внешнего скрипта, если не встретится новая ошибка, или не будет введена новая команда отладки.

Команду Go нельзя использовать, если встретилась синтаксическая ошибка. Если встретилась ошибка исполнения, перед повторным запуском убедитесь в том, что причина ошибки ликвидирована, иначе при вводе команды Go она повторится немедленно.

Команда MiniScript


Команда MiniScript для ввода и исполнения коротких скриптов (длиной до 175 символов). Этот режим похож на PALMenu/MiniScript. При выборе режима MiniScript, PAL попросит вас ввести содержание скрипта:

Command:
Enter single line script to be played.

Допускаются любые правильные команды скрипта, кроме определений процедур, и использование клавиш просмотра полей {Alt}{F5} или {Ctrl}{F} для просмотра и редактирования минискрпипта. ( Подробности содержатся в главе 2 руководства пользователя системы Paradox. Версии 1.0 и 1.1 системы Paradopx поддреживают минискрипты длиной до 50 символов.)

Основное отличие режима Debug/MiniScript от PALMenu/MiniScript в том, что при работе в первом режиме скрипт не запускается сразу после того, как вы нажали {Enter}. Вместо этого минискрипт становится текущим скрптом, вложенным в отлаживаемый скрипт, и высвечивается в окне отладчика в нижней части экрана. Для запуска минискрипта следует использовать команду Step (покомандный запуск) или Go. При завершении минискрипта управление передается отлаживаемому скрипту.

Минискрипты особенно полезны для создания "мгновенных слепков", необходимых для восстановления программы после ошибок исполнения. Например, если вы забыли присвоить значение переменной перед тем, как использовать ее в выражении, при обработке этого выражения возникнет ошибка. При этом можно войти в отладчик, с помощью минискрипта присвоить значение переменной, а затем продолжить выполнение скрипта с помощью команды Go. Не забудьте исправить скрипт позднее с помощью редактора.

Команды, вводимые вами в минискрипт, система записывает в короткий скрипт с именем Mini. Аналогично работе в режиме Value в случае возникновения ошибки в минискрипте снова включается отладчик, при этом уровень отладки становится на единицу глубже перво начального. В этом случае можно выйти из режима Miniscript с помощью команды Pop. Заметьте, что для редактирования минискриптов нельзя пользоваться редактором скриптов.

Если переменная является ограниченной в отлаживаемой процедуре, любая ссылка на нее в минискрипте является обращением к ограниченной переменной.

Команда Where?


Чтобы получить картину вложения текущего скрипта в другие скрипты или процедуры, следует выбрать режим Where? или нажать {Ctrl}{W}; при этом высвечиваются также величины формальных параметров и ограниченных переменных, определенных в процедурах. Возврат к отладке происходит после нажатия любой клавиши.

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

Если ваши скрипты имеют много уровней вложения, картинка режима Where? может не поместиться на экране. При нажатии любой клавиши будет воспроизведена оставшаяся часть картинки. Перед тем, как возвратиться к отладке, необходимо просмотреть все картинки режима Where?.

Команда Quit


Завершение работы отладчика и прекращение работы всех отлаживаемых скриптов происходит после выбора из меню опции Quit или нажатие клавиш {Ctrl}{Q}. При этом все определения процедур отлаживаемого скрипта удаляются из оператиной памяти. Величины переменных и массивов, присвоенные скриптом, сохраняются после выхода из отладчика.

Команда Pop


При выборе режима Pop или нажатии {Ctrl}{P} завершается выполнение текущего скрипта или процедуры и продолжается выполнение программного модуля, вызвавшего этот скрипт или процедуру (ес- ли такие есть). Если текущий скрипт является скриптом верхнего уровня, то команда Pop действует аналогично команде Quit.

Команда Pop осбенно удобнаю для выхода из режимов Value или MiniScript, так как оба этих режима запускают скрипты.

Команда Editor


При выборе режима Editor или нажатии {Ctrl}{E} происходит выход из отладчика непосредственно в редактор скриптов. При этом редактируемым скриптом становится текущий отлаживаемый скрипт, а курсор редактора устанавливается на строку этого скрипта, бывшую текущей в процессе отладки. Редактор PAL описан в главе 10.

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

Когда редактирование скрипта завершено, для его повторного запуска можно ввести команду Go из меню редактора. Если редактор является вашим собственным редактором, эта опция в нем, разумеется, отсутствует. Однако, вы можете нажать клавиши {Ctrl}{G} после выхода из редактора в систему Paradox. Если вы желаете продолжить отладку скриптов, вам следует нажать {Ctrl}{Break} и войти в редактор из меню Script Error, или ждать появления ошибки в скрипте.

ВЫХОД ИЗ ОТЛАДЧИКА


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

  • Quit или {Ctrl}{Q};
  • Editor или {Ctrl}{E}.

Отладка завершается и в некоторых друших режимах:

  • Выход из отладчика происходит при завершении текущего скрипта:
    • в режиме Step или {Ctrl}{S};
    • в режиме Next или {Ctrl}{N};
    • в режиме Go или {Ctrl}{G}.
  • Отладчик завершает работу по команде Pop ({Ctrl}{P}), если

    текущий скрипт является скриптом верхнего уровня.

  • Работа отладчика завершается, если в минискрипте встречены команды QUIT или EXIT.

Кроме того, отладка завершается, если в процессе нее в текущем скрипте встретились команды:

  • RETURN ( в скрипте верхнего уровня);
  • QUIT;
  • EXIT ( при этом завершается работа с системой Paradox ).

После завершения работы отладчика:

  • на экране появляется рабочая область системы Paradox;
  • все определения процедур удаляются из оперативной памяти;
  • сохраняются значения всех переменных и массивов.

УЧЕБНЫЙ КУРС РАБОТЫ С ОТЛАДЧИКОМ


В настоящем разделе на примере отладки простого скрипта про демонстрированы приемы работы с отладчиком.

Работая на автономном компьтере, поместите в дисковод А дискету с именем Sample Tables. С помощью опции Tools/Copy скопируйте скрипт debugtst с дискеты в рабочий каталог системы Paradox.

Если ваша система включена в сеть, скопируйте debugtst из общей области данных системы Paradox в ваш каталог.

Заметьте: если вы подключили к системе Paradox вместо редакторов скриптов свой собственный редактор, вам необходимо изменить команды редактирования так, чтобы они воспринимались этим редактором.

На рис. 11-3 приведена распечатка скрипта debugtst.

1 ;Заметьте: этот скрипт содержит ошибки!!!!!!! 2 PROC SomeText() ;определяет процедуру, высвечивающую

                         ; текст
     3     @4,0          ;устанавливает положение курсора
     4     STYLE REVERSE ;устанавливает режим инвертированного
                         ;изображения

5 ?title ;печатает заголовок экрана 6 STYLE ;устанавливает режим нормального

;изображэения
7 @7,0
8 TEXT
9 Этот текст вывечивается на экране в процессе тестиро 10 вания. Он появляется приблизительно в центре, на две 11 строки ниже заголовка экрана. 12
13 ENDTEXT
14 SLEEP 5000 ;ожидание 5 секунд 15 ENDPROC
16
17 WHILE(TRUE) ;цикл для тестирования 18 CLEAR ;очищает канву PAL (экран) 19 CLEARALL ;очищает рабочую область

     20    @4,0           ;устанавливает курсор в 0 позиции
                          ;четвертой строки

21 SHOWMENU ;создает демонстрационное меню 22 "Test" :"This is Just a test menu item", 23 "Quit" :"Yet another test menu item", 24 "Exam" :"We'll bet you guessed this was another test

menu item"
25 "Exit" :"Leave the test application, thank goodness" 26 TO choice
27 IF choice="ESC"
28 THEN QUIT
29 ENDIF
30 CLEAR
31 SWITCH
32 CASE choice = "Test":
33 SomeText()
34 CASE choice = "Quit":
35 SomeText()
36 CASE choise = "Exam":
37 SomeText()
38 CASE choise = "Exit":
39 QUIZ
40 OTHERWISE:
41 BEEP BEEP BEEP ;дает знать пользователю, что вы

;бор не правилен 42 ENDSWITCH
43 ENDWHILE

Рис. 11-3. Распечатка тестового скрипта.

В приведенном выше скрипте допущены две ошибки:

  • в строке 5 использована переменная title, которой не присвоено значение;
  • в конце строки 24 отсутствует запятая.

Рассмотрим последовательность отладки этого скрипта.

  1. Необходимо выбрать из меню PAL ({Alt}{F10}) опцию Debug и в ответ на запрос об имени отлаживаемого скрипта ввести debugtst. При этом ваш экран будет выглядеть так:
    • самая нижняя строка будет представлять собой текущую строку отлаживаемого скрипта;
    • выше нее будет находиться строка состояния отладчика;
    • в верхней части экрана будет высвечиваться меню, похожее на главное меню системы Paradox.

Т.е. экран будет представлять собой канву PAL с наложенной на нее информацией отладчика. После того, как вы ввели имя скрипта, PAL приготовился запустить его через отладчик. При этом на экране (см. главу 13) инициализируется канва. В данном случае канва содержит главное меню системы Paradox и выглядит как ее рабочая область.

Канву PAL, тем не менее, легко отличить от рабочей области системы Paradox: если высвечивается канва, то на экране присутствует курсор в первой позиции первой строки (в данном случае на букве V слова View ). Далее вы можете действовать несколькими способами:

  • запустить скрипт пошагово с помощью режима Step или команды {Ctrl}{S};
  • запустить скрипт с помощью режима Go или команды {Ctrl}{G};
  • изменить канву PAL в режиме MiniScript;
  • выбрать опцию из скрытого главного меню системы Paradox для того, чтобы изменить рабочую область системы Paradox. 2. Предположим, мы запустили скрипт с помощью опции Go. В начале скрипта содержатся команды очистки канвы и рабочей области, а затем начинается цикл WHILE. Однако, скрипт не будет исполняться долго, т.к. его команда SHOWMENU содержит синтаксическую ошибку. 3. Для исправления ошибки выберите из меню Script Error опцию Debug. В нижней части экрана вы увидите строку, содержащую ошибку. Это строка 25. Будет высвечено сообщение об ошибке: Expecting Keyword To. Просмотрев скрипт, вы обнаружите ключевое слово TO в следующей строке скрипта. Так что же ожидает здесь PAL? Посмотрев внимательнее, легко обнаружить, что в конце строки 24 отсутствует запятая. PAL считает, что это последняя строка меню, и ожидает, что появится ключевое слово TO. Отсюда вытекает правило отладки:

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

4. Для исправления синтаксической ошибки следует обратиться к редактору скриптов. Когда в редакторе будет высвечен скрипт, обратите внимание, что курсор будет находиться в той строке, где отладчик обнаружил ошибку. Вставьте запятую в конце предыдущей строки. Для завершения редактирования нажмите клавишу F2. При этом отредактированный скрипт будет сохранен на диске. Можно также выбрать режим Go из меню редактора. Если вы нажали клавишу F2, обратитесь к меню PAL и выберите опцию Debug. В этот раз попробуйте исполнить скрипт покомандно. Обратите внимание, что строка состояния отладчика и текущая строка отлаживаемого скрипта изменяются после каждого шага (нажатие {Ctrl}{S}). Обратите также внимание, что некоторые строки, в частности, тело процедуры SomeText как будто бы не обрабатываются.

На самом деле, строки процедуры высвечиаются только при ее исполнении, а не в момент ее определения. Система Paradox замечает ключевое слово PROC, добавляет SomeText к списку активных процедур и перемещается к первой команде, следующей за телом процедуры.

Когда вы достигнете команды SHOWMENU, высветится меню. После этого единственным ответом на нажатие {Ctrl}{S} будет звуковой сигнал: это происходит потому, что PAL ждет входной информации, т.е. выбора из меню. Обратите внимание, что строки команды SHOWMENU не появляются в нижней стоке экрана (если в них нет ошибок), так как они являются частью конструкции SHOWMENU.

5. Выберите из меню опцию Quiz и продолжить выполнение скрипта. Так как скрипт обращается к процедуре SomeText, то при пошаговом выполнении после обработки команды вызова этой процедуры в окне отладчика будут появляться команды тела процедуры. Скоро вы увидите другую ошибку.

6. Для того, чтобы выяснить, на каком уровне отладки вы находитесь, выберите опцию Where?. Вы обраружите, что вы находитесь на третьем уровне отладки. Первый уровень - это уровень скрипта Debugtst, второй уровень - уровень процедуры SomeText, уровень отладчика - третий уровень.

7. Выйдите из режима Where?, нажав любую клавишу. В нижней части экрана вы увидите следующую ошибку в четвертой строке скрипта. Курсор отладчика будет находиться между командой ? и именем переменной title. Ошибка очевидна. Вы забыли присвоить значение переменной.

8. Чтобы присвоить переменной значение для продолжения отладки, войдите в режим MiniScript, затем введите недостающее выражение:

title = format("w80,ac","this is a title")

9. Для выяснения, где вы находитесь, нажмите {Ctrl}{W}. Вы снова увидите экран Where?. Вспомните, что минискрипт является скриптом, вложенным в текущий скрипт или процедуру. Поэтому экран Where? содержит информацию об уровне "Script Mini".

10. Выйдите из режима Where?, нажав любую клавишу.

11. Так как текущей строкой является строка минискрипта, выполните ее с помощью {Ctrl}{S}. После повторного нажатия {Ctrl}{S} на экране появится заголовок, а затем и текст SomeText.

12. Нажмите {Ctrl}{S}, когда появится команда Sleep 5000. Заметьте, что в течение нескольких секунд как будто бы ничего не происходит. На самом деле происходит выполнение команды Sleep - пятисекундная пауза.

13. Продолжайте покомандное выполнение программы. Снова появится меню. Выберите опцию Exit. Вы увидите, что текущей строкой станет строка с команой Quit. Но это лишь одна из альтернатив команды Case. А ведь вы не видели в текущей строке ключевого слова Case! Мы рекомендуем вам отлаживать скрипты, имея в руках их распечатку с пронумерованными строками.

Посмотрев в распечатку, вы увидите, что Quit является ветвью команды Switch, соответствующей опции меню Exit. Если бы вы не взглянули на распечатку, вы бы, наверное, не узнали, какая из команд Quit является текущей.

14. Нажав {Ctrl}{S}, выполните команду Quit, завершающую выполнение скрипта. На экране появится главное меню и рабочая область системы Paradox. Вы завершили тестирование Debugtst.

15. Вспомните, что исправление текста скритпа не завершено. Ведь вам пришлось использовать минискрипт для присвоения величины переменной Title. Поэтому сейчас самое время запустить редактор скриптов и добавить недостающую строку:

title = format("w80,ac","this is a title")

Вы должны вставить ее перед командой ? Title в любом удобном для вас месте.

ПРЕДОСТЕРЕЖЕНИЕ: Помните, что, если переменная однажна определена, она сохраняет свое значение в течение всего сеанса работы с сиситемой Paradox. Если вы попробуете запустить скрипт снова, не исправив ошибку, он будет выполняться правильно, несмотря на то, что переменной Title не присваивается значение в теле скрипта. Мы рекомендуем вам перед тестированием одного скрипта после запуска другого выполнить минискрипт:

RELEASE VARS ALL

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

Хотя наш пример демонстрирует не все средства отладчика, мы надеемся, что вы сами почувствуете его мощь и гибкость, отлаживая свои скрипты.




  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте