Rexx - Отладка
Отладка - важная функция любого языка программирования. Это помогает разработчику диагностировать ошибки, находить основную причину и соответствующим образом устранять их. В Rexx для отладки используется утилита трассировки. Инструкцию трассировки можно реализовать двумя способами: один - в пакетном, а другой - в интерактивном. Давайте посмотрим, как реализовать оба варианта.
Трассировка в пакетном режиме
Команда трассировки используется для получения подробного уровня каждой выполняемой команды Rexx.
Общий синтаксис оператора трассировки показан следующим образом:
Синтаксис
trace [setting]
Где настройка может быть любой из следующих опций -
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 '
Результат вышеупомянутой программы будет следующим -
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 означает, что для графика установлено значение «Нормальный».
Установка значения трассировки
Уровень трассировки можно установить с помощью функции трассировки. Общий синтаксис и пример показаны ниже.
Синтаксис
trace(travel_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 - Это вариант по умолчанию, при котором трассировка не выполняется.
Давайте посмотрим на пример реализации активной трассировки.
пример
/* 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'
Результат вышеуказанной программы будет таким, как показано в следующей программе. Трассировка будет останавливаться на каждой строке кода; затем вам нужно нажать кнопку Enter, чтобы перейти к следующей строке кода.
This is an incorrect number
+++ "LINUX COMMAND /home/cg/root/5798511/main.rex"
5 *-* n = 100.45 if datatype( n, wholenumber ) then
+++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++
6 *-* signal msg
10 *-* msg :
10 *-* say 'This is an incorrect number'