Solaris モジューラデバッガ

構文

デバッガは、標準入力からコマンドを処理します。端末からの標準入力の場合、MDB では端末編集機能が使用できます。また、MDB は、マクロファイルからのコマンドや dcmd パイプラインからのコマンドも処理できます。これについては後述します。言語構文は、ターゲット内のメモリーアドレスに代表されるような、式の値を計算し、dcmd をそのアドレスに適用するという構想に基づいて設計されています。現在のアドレスの位置はドットと呼ばれ、" . " は該当する値の参照に使用されます。

メタキャラクタには、次のような文字があります。

[ ] | ! / ¥ ? = > $ : ; 復帰改行文字、空白文字、タブ

空白とは、タブや空白文字のことです。ワード (word) とは、1 つまたは複数の引用符なしのメタキャラクタで区切られた文字列のことです。ただし、コンテキストによっては単なる区切り記号として機能するメタキャラクタもあるので、これについては後述します。識別子とは、文字列、数字、下線、ピリオド、または冒頭に文字、下線、ピリオドのどれかを持つ逆引用符のことです。識別子は、シンボル名、変数、dcmd、および walker として使用されます。コマンドは、復帰改行文字やセミコロン (;) で区切ります。

dcmd は、次のようなワードまたはメタキャラクタで表されます。

/ ¥ ? = > $character :character ::identifier

メタキャラクタで指定された dcmd や接頭辞 $: を 1 つ持つ dcmd は、組み込み演算子として提供されます。また、これらの dcmd は、従来の adb(1) ユーティリティのコマンドセットとの互換性を備えています。dcmd が構文解析されると、/¥?=>$、および : は、引数リストが終了するまでメタキャラクタとして認識されなくなります。

単純コマンドとは、後に一連の文字列やワードが続く dcmd のことです。このワードは空白文字で区切られている場合もあります。これらのワードは、呼び出される dcmd に引数として渡されます。ただし、「演算機能の拡張」「引用」で特に指定されているワードは例外です。各 dcmd は、処理の成功、失敗、または無効な引数を受け取ったことを示す終了ステータスを返します。

パイプライン (pipeline) とは、| で区切られた 1 つまたは複数の単純コマンドのことです。シェルの場合とは異なり、MDB パイプライン内の dcmd は分割プロセスとしては実行されません。MDB では、パイプラインが構文解析された後に、それぞれの dcmd が左から右へと順に呼び出されます。各 dcmd の出力は、処理された後に格納されます (「dcmd パイプライン」を参照)。左側の dcmd 処理が終了すると、その出力はパイプライン内の次の dcmd への入力として使用されます。どの dcmd も終了ステータスとして正常終了を返さない場合、そのパイプラインは強制終了します。

式 (expression) は一連のワードで表され、64 ビットの符号なし整数を計算するために評価されます。ワードは、「演算機能の拡張」に示す規則を用いて評価されます。