Отладка — важная особенность любого языка программирования. Это помогает разработчику диагностировать ошибки, находить основную причину и затем устранять их соответствующим образом. В Rexx утилита трассировки используется для отладки. Инструкция трассировки может быть реализована двумя способами: один — в пакетном режиме, а другой — в интерактивном режиме. Давайте посмотрим, как реализовать оба варианта.
Трассировка в пакетном режиме
Команда trace используется для предоставления подробного уровня каждой выполняемой команды Rexx.
Общий синтаксис оператора трассировки показан следующим образом:
Синтаксис
trace [setting]
Где настройка может быть любой из следующих опций —
-
A — Отслеживает все команды.
-
C — Отслеживает только те команды хоста, которые отправляются в операционную систему.
-
E — Отслеживает только те команды хоста, которые были отправлены операционной системе и привели к ошибке.
-
F — отслеживает только те команды хоста, которые отправлены операционной системе, что привело к сбою.
-
I — обеспечивает промежуточный уровень трассировки команд Rexx.
-
L — эта опция, если вы хотите пометить трассировку, как это происходит.
-
N — это опция по умолчанию, при которой трассировка не происходит.
A — Отслеживает все команды.
C — Отслеживает только те команды хоста, которые отправляются в операционную систему.
E — Отслеживает только те команды хоста, которые были отправлены операционной системе и привели к ошибке.
F — отслеживает только те команды хоста, которые отправлены операционной системе, что привело к сбою.
I — обеспечивает промежуточный уровень трассировки команд Rexx.
L — эта опция, если вы хотите пометить трассировку, как это происходит.
N — это опция по умолчанию, при которой трассировка не происходит.
Давайте посмотрим на пример команды trace.
пример
/* Main program */ trace A /* Main program */ n = 100.45 if datatype( n, wholenumber ) then signal msg say 'This is a whole number' return 0 msg : say ' This is an incorrect number '
Вывод вышеуказанной программы будет следующим:
5 *-* n = 100.45 if datatype( n, wholenumber ) then signal msg 7 *-* say 'This is a whole number This is a whole number 8 *-* return 0
Из выходных данных вы можете видеть, что к выходным данным программы была добавлена дополнительная трассировка. Следующие вещи можно отметить о выходе —
-
Номер строки вместе с выполненным оператором добавляется в вывод трассировки.
-
Каждая выполняемая строка отображается в выводе трассировки.
Номер строки вместе с выполненным оператором добавляется в вывод трассировки.
Каждая выполняемая строка отображается в выводе трассировки.
Функция трассировки
Трассировка также может быть включена с помощью функции трассировки. Общий синтаксис и пример приведены ниже.
Синтаксис
trace()
Вышеуказанная функция возвращает текущий уровень трассировки.
параметры
Никто
Возвращаемое значение
Вышеуказанная функция выдает текущий уровень трассировки.
пример
/* Main program */ say trace() /* Main program */ n = 100.45 if datatype( n, wholenumber ) then signal msg say 'This is a whole number' return 0 msg : say 'This is an incorrect number '
Вывод вышеуказанной программы будет следующим.
N This is an incorrect number
Первая строка N обозначает, что для трассы установлено значение Normal.
Установка значения трассировки
Уровень трассировки можно установить с помощью функции трассировки. Общий синтаксис и пример приведены ниже.
Синтаксис
trace(travel_level)
параметры
-
trace_level — это похоже на опции, доступные для установки уровня трассировки.
trace_level — это похоже на опции, доступные для установки уровня трассировки.
Возвращаемое значение
Вышеуказанная функция выдает текущий уровень трассировки.
пример
/* Main program */ say trace() current_trace = trace('A') say current_trace /* Main program */ n = 100.45 if datatype( n, wholenumber ) then signal msg say 'This is a whole number' return 0 msg : say ' This is an incorrect number '
Вывод вышеуказанной программы будет следующим:
N 4 *-* say current_trace N 6 *-* n = 100.45 7 *-* if \ datatype( n, wholenumber ) then 8 *-* signal msg 12 *-* say 'This is an incorrect number' 'This is an incorrect number'
Интерактивная трассировка
Интерактивное отслеживание заключается в том, что отслеживание выполняется во время работы программы. Точно так же, как в среде IDE, такой как Visual Studio для .Net, в которой вы можете добавить точки останова и посмотреть, как выполняется каждый оператор, аналогично здесь вы также можете увидеть программу при выполнении каждой строки кода.
Общий синтаксис выглядит следующим образом —
Синтаксис
trace ?options
Где параметры для команды трассировки такие же, как показано ниже.
-
A — отслеживает все команды
-
C — Отслеживает только те команды хоста, которые отправляются в операционную систему.
-
E — Отслеживает только те команды хоста, которые были отправлены операционной системе и привели к ошибке.
-
F — отслеживает только те команды хоста, которые отправлены операционной системе, что привело к сбою.
-
I — обеспечивает промежуточный уровень трассировки команд Rexx.
-
L — эта опция, если вы хотите пометить трассировку, как это происходит.
-
N — это опция по умолчанию, при которой трассировка не происходит.
A — отслеживает все команды
C — Отслеживает только те команды хоста, которые отправляются в операционную систему.
E — Отслеживает только те команды хоста, которые были отправлены операционной системе и привели к ошибке.
F — отслеживает только те команды хоста, которые отправлены операционной системе, что привело к сбою.
I — обеспечивает промежуточный уровень трассировки команд Rexx.
L — эта опция, если вы хотите пометить трассировку, как это происходит.
N — это опция по умолчанию, при которой трассировка не происходит.
Давайте рассмотрим пример реализации активной трассировки.
пример
/* Main program */ trace ?A /* Main program */ n = 100.45 if datatype( n, wholenumber ) then signal msg say 'This is a whole number' return 0 msg : say 'This is an incorrect number'
Вывод вышеуказанной программы будет таким, как показано в следующей программе. Трассировка остановится на каждой строке кода; затем вам нужно нажать кнопку ввода, чтобы перейти к следующей строке кода.