Solaris モジューラデバッガ

dcmd パイプライン

dcmd は、縦棒演算子 (|) を使ってパイプラインの中へ入れることができます。パイプラインの目的は、一般的に仮想アドレスのような値のリストを、1 つの dcmd や walker から次の dcmd や walker へと渡していくことです。パイプラインステージは、あるデータ構造体タイプのポインタを、それに対応するデータ構造体のポインタへと対応付けるために使用します。その目的は、アドレスリストをソートしたり、あるプロパティを持つ構造体のアドレスを選択したりすることです。

MDB は、パイプライン内の各 dcmd を左から右へと順番に実行します。現在のドット値、またはコマンドの開始時に明示的な式によって指定された値を使って、最も左にある dcmd が実行されます。縦棒演算子 (|) を見つけると、MDB は、その左側までの dcmd 出力、MDB 構文解析部、および空の値リストとの間に、パイプすなわち共用バッファを作成します。

dcmd を実行するにしたがって、その標準出力はパイプの中に配置され、次に構文解析部によって使用され、評価されます。それは、あたかも MDB が標準出力からデータを読み込んでいるように見えます。各行には、終端に復帰改行文字またはセミコロン (;) を持つ算術式が含まれます。その算術式の値は、パイプに関連付けられた値のリストに追加されます。構文エラーが発見されると、そのパイプラインは異常終了します。

縦棒演算子 (|) の左側までの dcmd が完了すると、そのパイプに関連付けられた値のリストは、縦棒演算子 (|) の右側の dcmd を呼び出すために使用されます。リストの各値については、ドットにその値が設定された後、右側の dcmd が実行されます。パイプラインの最も右にある dcmd だけが、その出力を標準出力に表示します。パイプライン内のいずれかの dcmd が標準エラー出力を生じた場合は、それらのメッセージを直接標準エラーに出力するので、パイプラインの一部としては処理されません。