Solaris モジューラデバッガ

構文

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

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

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

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

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

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

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

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

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

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