Учебники

Rexx — отладка

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

Трассировка в пакетном режиме

Команда trace используется для предоставления подробного уровня каждой выполняемой команды Rexx.

Общий синтаксис оператора трассировки показан следующим образом:

Синтаксис

trace [setting] 

Где настройка может быть любой из следующих опций —

  • A — Отслеживает все команды.

  • C — Отслеживает только те команды хоста, которые отправляются в операционную систему.

  • E — Отслеживает только те команды хоста, которые были отправлены операционной системе и привели к ошибке.

  • F — отслеживает только те команды хоста, которые отправлены операционной системе, что привело к сбою.

  • I — обеспечивает промежуточный уровень трассировки команд Rexx.

  • L — эта опция, если вы хотите пометить трассировку, как это происходит.

  • N — это опция по умолчанию, при которой трассировка не происходит.

A — Отслеживает все команды.

C — Отслеживает только те команды хоста, которые отправляются в операционную систему.

E — Отслеживает только те команды хоста, которые были отправлены операционной системе и привели к ошибке.

F — отслеживает только те команды хоста, которые отправлены операционной системе, что привело к сбою.

I — обеспечивает промежуточный уровень трассировки команд Rexx.

L — эта опция, если вы хотите пометить трассировку, как это происходит.

N — это опция по умолчанию, при которой трассировка не происходит.

Давайте посмотрим на пример команды trace.

пример

Live Demo

/* 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() 

Вышеуказанная функция возвращает текущий уровень трассировки.

параметры

Никто

Возвращаемое значение

Вышеуказанная функция выдает текущий уровень трассировки.

пример

Live Demo

/* 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 — это опция по умолчанию, при которой трассировка не происходит.

Давайте рассмотрим пример реализации активной трассировки.

пример

Live Demo

/* 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' 

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