Rexx-debugging

提供:Dev Guides
移動先:案内検索

Rexx-デバッグ

デバッグは、プログラミング言語の重要な機能です。 開発者がエラーを診断し、根本原因を見つけて、それに応じて解決するのに役立ちます。 Rexxでは、トレースユーティリティがデバッグに使用されます。 トレース命令は、2つの方法で実装できます。1つはバッチモードで、もう1つはインタラクティブモードです。 両方のオプションを実装する方法を見てみましょう。

バッチモードでのトレース

traceコマンドは、実行される各Rexxコマンドの詳細レベルを提供するために使用されます。

トレース文の一般的な構文は次のように示されています-

構文

trace [setting]

設定は、次のオプションのいずれかになることができます-

  • 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()

上記の関数は、現在のトレースレベルを返します。

パラメーター

None

戻り値

上記の関数は、現在のトレースレベルを示します。

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

インタラクティブなトレース

対話型トレースでは、プログラムの実行時にトレースが実行されます。 Visual Studio for .NetなどのIDEのように、ブレークポイントを追加して各ステートメントの実行方法を確認できます。同様に、各コード行の実行中にプログラムを確認できます。

一般的な構文は次のとおりです-

構文

trace ?options

ここで、オプションは以下に示すようにtraceコマンドの場合と同じです。

  • 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'