Solaris モジューラデバッガ

dcmd と walker の名前解決

前述のように、MDB の各 dmod は、一連の dcmd と walker を提供します。dcmd と walker は、2 つの異なる広域名前空間でトラックされます。また、MDB も、各 dmod に関連付けられた dcmd と walker の名前空間をトラックし続けます。与えられた dmod 内で、dcmd や walker に同じ名前を付けることはできません。このような名前の重複がある dmod は、読み込みに失敗します。

異なる dmod から提供された dcmd や walker 間での名前の重複は、広域名前空間では許されます。名前の重複がある場合、その特定の読み込まれる名前を持つ dcmd または walker のうち、最初のものが広域名前空間で優先権を与えられます。ほかの定義は、読み取り順にリストに保存されます。

逆引用符 " ` " は、ほかの定義を選択するための参照範囲演算子として、dcmd や walker の名前に使用されます。たとえば、dmod m1m2 が、それぞれ dcmd d を提供する場合に、m1 の方が m2 よりも先に読み込まれたときには、次のようになります。

::d

m1d 定義を実行する

::m1`d

m1d 定義を実行する

::m2`d

m2d 定義を実行する

現時点で m1 モジュールが読み込まれていない場合は、広域定義リスト上の次の dcmd である m2`d が、広域定義として使用されます。dcmd や walker の現在の定義は、以下に示すように、::which dcmd を使用して定義できます。広域定義リストは、::which -v を使用して表示できます。