ポインターがアドレス指定するデータの表示
ポインターが指す対象を表示したい場合には、:c または :x の
接尾部を指定した EVAL コマンドを使用することができます。 例えば、
ポインター・フィールド PTR1 が 10 バイトの文字データを指す場合には、
以下を指定することにより、この 10 バイトの内容が表示されます。
EVAL PTR1:c 10
この 10 バイトの内容が表示されます。また、次を使用すると 16 進で内容を表示することもできます。
EVAL PTR1:x 10
ポインターがアドレス指定するデータが、パック・データや 2 進データなどの 印刷可能形式で保管されていない場合には、これは特に便利です。
自身がポインター PTR2 に基づいている基底付きポインター PTR1 に基づく変数 FLD1 を持っている場合、 デバッガーで単純な EVAL コマンドを使用して FLD1 を評価することはできません。
その代わりに、デバッガーに基底付きポインターのチェーンを明示的に提供する必要があります。
===> EVAL PTR2->PTR1->FLD1
例えば、次のような定義がある場合、
D pPointers S *
D pointers DS based(pPointers)
D p1 *
D p2 *
D data1 S 10A based(p1)
D data2 S 10A based(p2)
これらのコマンドをデバッガーで使用して、
DATA1 および DATA2 の値を次のように表示または変更することができます。
===> eval pPointers->p1->data1
===> eval pPointers->p2->data2 = 'new value'
デバッガーで指定する式を決定するには、
評価したい値を持つ式の終わりから開始します。
data1
次に左に移動して、
data1 を定義するために、BASED キーワードに表示される名前 (p1) を追加します。 p1->data1
次に再び左に移動して、
p1 を定義するために、BASED キーワードに表示される名前 (pPointers) を追加します。
pPointers->p1->data1
指定したポインターが BASED キーワードで定義されていない場合、
式は完了します。
この場合、pPointers は基底として定義されないため、デバッグ式が
完了します。
===> eval pPointers->p1->data1