Главная » Basic » ТРАССИРОВКА ИСПОЛНЕНИЯ ПРОГРАММЫ

0

В программах, где довольно много операторов IF, циклов FOR-NEXT и подпрограмм,  образуется значительное   число   путей,   по   которым   может   пойти   их   исполнение.   Если   не   выводить промежуточные результаты с помощью операторов PRINT, то при возникновении  ошибки трудно определить, по какому именно пути шло перед этим исполнение программы.  Некоторые системы обеспечивают удобный способ получения подобной информации с

помощью команды TRACE (трассировка), побуждающей интерпретатор печатать номер  каждого выполняемого оператора. Тем самым при получении сообщения об ошибке  складывается полная "предыстория" исполнения программы.

10 REM ДЕМОНСТРАЦИЯ ТРАССИРОВКИ

20 TRACE

30 I=10

40 FOR J=l TO 2

50   I=I+1

60   PRINT J;1

70 NEXT J

80 END RUN

[30]  [40]  [50] [60]  1  11 [70]  [50] [60]  2  12

[70]  [80] OK

Приведенная  выше  программа  демонстрирует  действие  оператора  TRACE  в  Бейсике  Microsoft, которым  можно  пользоваться  и  как  командой,  в  режиме  немедленного   исполнения.  Номера операторов изображаются заключенными в квадратные скобки с тем, чтобы их легко было отличить от других данных, которые могут выводиться в диагностических целях, например от значений J и I, выдаваемых в строке 60. Оператор NO TRACE отменяет трассировку.

В  Бейсике  ВВС  для  управления трассировкой используются операторы -TRACE  ON  (включить трассировку) и TRACE OFF (выключить трассировку) и, кроме того, предусмотрен оператор TRACE N, где N номер оператора. В этом случае проводится трассировка только тех операторов, номера которых не превышают N.

При трассировке значительно замедляется исполнение программы и может создаваться  множество выходных данных. Чтобы избежать этого, можно сначала подождать, пока программа  не окажется вблизи ошибочной области, приостановить ее исполнение (клавишей "прерывание"), затем набрать команду TRACE и продолжить работу программы по команде CONTINUE. Другой способ состоит в окаймлении ошибочной области в программе операторами TRACE и NO TRACE.

Учтите, что интерпретатор может оптимизировать предоставляемую ему для исполнения программу на Бейсике, поэтому могут изображаться не все ожидаемые номера строк. Это относится к оператору FOR, открывающему цикл FOR-NEXT в приведенном выше примере.

Источник: Уолш Б.    Программирование на Бейсике: Пер. с англ. М.: Радио и связь, 1988. 336 с: ил.

По теме:

  • Комментарии