日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
B.3.2 識別子の作成 |
組み込みシンボル %NAME を使用すると,現在の言語では通常は使用できない識別子を作成できます。この場合の構文は次のとおりです。
%NAME 'character-string' |
次の例では,'12' という名前の変数を調べます。
DBG> EXAMINE %NAME '12' |
次の例では,コンパイラ生成ラベル P.AAA を調べます。
DBG> EXAMINE %NAME 'P.AAA' |
組み込みシンボル %PARCNT は,指定する実パラメータの個数が一定でないコマンド・プロシージャで使用します。 %PARCNT はデバッガ・コマンド・プロシージャ内だけで定義されます。
%PARCNT は,現在のコマンド・プロシージャに渡される実パラメータの数を指定します。次の例では,コマンド・プロシージャ ABC.COM が起動され, 3 つのパラメータが渡されます。
DBG> @ABC 111,222,333 |
ABC.COM では,%PARCNT の値は現在 3 です。この %PARCNT は ABC.COM に渡された各パラメータ値を得るためのループ・カウンタとして使用されます。
DBG> FOR I = 1 TO %PARCNT DO (DECLARE X:VALUE; EVALUATE X) |
B.3.4 デバッガ・インタフェース ( コマンドまたは HP DECwindows Motif for OpenVMS ) の決定
組み込みシンボル %DECWINDOWS を使用すると,デバッガの HP DECwindows Motif for OpenVMS インタフェースが表示されるのかコマンド・インタフェースが表示されるのかを決定できます。 HP DECwindows Motif for OpenVMS ユーザ・インタフェースを使用していれば, %DECWINDOWS の値は 1 (TRUE) です。コマンド・インタフェースを使用していれば,%DECWINDOWS の値は 0 (FALSE) です。次に例を示します。
DBG> EVALUATE %DECWINDOWS 0 |
次の例は,デバッガの初期化ファイル内で %DECWINDOWS を使用して,デバッガの起動時にデバッガ・ソース・ウィンドウ SRC の位置決めする方法を示します。
IF %DECWINDOWS THEN ! DECwindows Motif (ワークステーション) 構文: (DISPLAY SRC AT (100,300,100,700)) ELSE ! 画面モード (端末) 構文: (DISPLAY SRC AT (AT H1)) |
組み込みシンボル %BIN,%DEC,%HEX,%OCT は,アドレス式と言語式内で,そのあとに続く整数リテラル,またはそのあとの括弧で囲まれた式の中にあるすべての整数リテラルをそれぞれ,2 進基数,10 進基数,16 進基数, 8 進基数と解釈することを指定するのに使用します。ただし,これらの基数組み込みシンボルは,必ず整数リテラルとともに使用しなければなりません。次に例を示します。
DBG> EVALUATE/DEC %HEX 10 16 DBG> EVALUATE/DEC %HEX (10 + 10) 32 DBG> EVALUATE/DEC %BIN 10 2 DBG> EVALUATE/DEC %OCT (10 + 10) 16 DBG> EVALUATE/HEX %DEC 10 0A DBG> SET RADIX DECIMAL DBG> EVALUATE %HEX 20 + 33 ! 20 を 16 進数として,33 を 10 進数として扱う 65 ! 結果として得られる値は 10 進数である DBG> EVALUATE %HEX (20+33) ! 20 と 33 の両方を 16 進数として扱う 83 DBG> EVALUATE %HEX (20+ %OCT 10 +33) ! 20 と 33 を 16 進数として, 91 ! 10 を 8 進数として扱う DBG> SYMBOLIZE %HEX 27C9E3 ! 16 進アドレスをシンボル化する DBG> DEPOSIT/INST %HEX 5432 = 'MOVL ^O%DEC 222, R1' DBG> ! アドレス 5432 を 16 進数として,オペランド 222 を10 進数として扱う |
次の組み込みシンボルを使用すると,プログラム記憶位置と要素の現在値を指定できます。
シンボル | 機能 |
---|---|
%CURLOC
.(ピリオド) |
現在の論理要素---EXAMINE コマンド,DEPOSIT コマンドまたは EVALUATE/ADDRESS コマンドによって最後に参照されたプログラム記憶位置。 |
%NEXTLOC
Return キー |
現在の要素の論理的後続データ ---EXAMINE コマンド,DEPOSITコマンド,または EVALUATE/ADDRESS コマンドによって最後に参照された記憶位置の論理的に続くプログラム記憶位置。Return キーはコマンド終了文字なので,これはコマンド終了文字を指定できる場所 ( たとえば EXAMINE の直後,ただし DEPOSIT または EVALUATE/ADDRESS の直後ではいけない ) だけで使用できる。 |
%PREVLOC
^(サーカンフレックス) |
現在の要素の論理的先行データ---EXAMINE コマンド,DEPOSIT コマンドまたは EVALUATE/ADDRESS コマンドによって最後に参照された記憶位置の論理的に前にあるプログラム記憶位置。 |
%CURVAL
\ (バックスラッシュ) |
EVALUATE コマンドまたは EXAMINE コマンドによって最後に表示されたか DEPOSIT コマンドによって最後に格納された値。この 2 つのシンボルは,EVALUATE/ADDRESS コマンドの影響を受けない。 |
次の例では,WIDTH 変数を調べます。次に,値 12 を,現在の記憶位置 ( WIDTH ) に格納します。これは,現在の記憶位置を確認することによって調べます。
DBG> EXAMINE WIDTH MOD\WIDTH: 7 DBG> DEPOSIT . = 12 DBG> EXAMINE . MOD\WIDTH: 12 DBG> EXAMINE %CURLOC MOD\WIDTH: 12 DBG> |
次の例では,配列内で次の記憶位置と前にある記憶位置を調べます。
DBG> EXAMINE PRIMES(4) MOD\PRIMES(4): 7 DBG> EXAMINE %NEXTLOC MOD\PRIMES(5): 11 DBG> EXAMINE [Return] ! 次の記憶位置を調べる MOD\PRIMES(6): 13 DBG> EXAMINE %PREVLOC MOD\PRIMES(5): 11 DBG> EXAMINE ^ MOD\PRIMES(4): 7 DBG> |
すべての場合に,Return キーを使用して論理的後続データを示すことができるとはかぎりません。たとえば,次の記憶位置を示すにはシンボル %NEXTLOC を使用しますが,その目的で DEPOSIT コマンドの入力後に Return キーを押すことはできません。
B.3.7 アドレス式におけるシンボルと演算子の使用方法
アドレス式で使用できるシンボルと演算子を次に示します。単項演算子のオペランドは 1 つです。二項演算子のオペランドは 2 つです。
シンボル | 機能 |
---|---|
%LABEL | 後続の数値リテラルがプログラム・ラベル ( Fortran などのように数値のプログラム・ラベルを持っている言語の場合 ) であることを指定する。含んでいるモジュールを指定するパス名接頭識別子をラベルにつけることができる。 |
%LINE | 後続の数値リテラルがプログラム内の行番号であることを指定する。含んでいるモジュールを指定するパス名接頭識別子を行番号につけることができる。 |
バックスラッシュ(\) |
パス名内で使用すると,パス名の各要素を区切る。この場合,完全パス名の一番左の要素がバックスラッシュであってはならない。
シンボルの接頭辞として使用する場合,シンボルをグローバル・シンボルと解釈することを指定する。この場合,バックスラッシュはシンボルの完全パス名の一番左の要素でなければならない。 |
アットマーク(@)
ピリオド(.) |
単項演算子。アドレス式では,アットマーク(@) とピリオド (.) はどちらも "内容" 演算子として機能する。"内容"演算子を使用すると,そのオペランドはメモリ・アドレスと解釈され,そのアドレスの内容 ( そこにある値 ) を指す。 |
ビット・フィールド <p,s,e> | 単項演算子。ビット・フィールド選択をアドレス式に適用できる。ビット・フィールドを選択するには,ビット・オフセット (p),ビット長(s),符号拡張ビット(e) を指定する ( 省略可能 )。 |
+ 記号(+) | 単項演算子または二項演算子。単項演算子の場合,オペランドの値そのものを示す。二項演算子の場合,先行オペランドと後続オペランドの両方を加算する。 |
- 記号(-) | 単項演算子または二項演算子。単項演算子の場合,オペランドの値の否定を示す。二項演算子の場合,先行オペランドから後続オペランドを減算する。 |
乗算記号(*) | 二項演算子。先行オペランドに後続オペランドを掛ける。 |
除算記号(/) | 二項演算子。先行オペランドを後続オペランドで割る。 |
次に,アドレス式での組み込みシンボルと演算子の使い方の例を示します。
次のコマンドは,現在実行が中断しているモジュールの行 26 にトレースポイントを設定します。
DBG> SET TRACE %LINE 26 |
次のコマンドは,行 47 のソース行を表示します。
DBG> EXAMINE/SOURCE %LINE 47 module MAIN 47: procedure SWAP(X,Y: in out INTEGER) is DBG> |
次のコマンドは,MOD4 モジュールのラベル 10 にブレークポイントを設定します。
DBG> SET BREAK MOD4\%LABEL 10 |
次のコマンドは,MOD4 モジュールの ROUT2 ルーチンで宣言された COUNT 変数の値を表示します。バックスラッシュ (\) パス名区切り文字でパス名要素を区切ります。
DBG> EXAMINE MOD4\ROUT2\COUNT MOD4\ROUT2\COUNT: 12 DBG> |
次のコマンドは,QUEUMAN モジュールの行 26 にブレークポイントを設定します。
DBG> SET BREAK QUEUMAN\%LINE 26 |
次のコマンドはグローバル・シンボル X の値を表示します。
DBG> EXAMINE \X |
デバッガがアドレス式の要素を評価する順番は,ほとんどのプログラミング言語で使用される順番と似ています。この順番は,次の 3 つの要素によって決まります。優先順位が最も高いものから順に並んでいます。
次にデバッガ演算子を,優先順位が最も高いものから順に示します。
たとえば,次の式を評価する場合,デバッガはまず括弧内のオペランドを加算し,次にその結果を 4 で割り,次に 5 からその結果を引きます。
5--(T+5)/4 |
次のコマンドは,メモリ記憶位置 X + 4 バイトに含まれている値を表示します。
X + 4 bytes:
DBG> EXAMINE X + 4 |
次に,内容演算子の使い方を示します。最初の例は,現在の PC 値が指す命令 ( アドレスが PC に含まれており,実行されようとしている命令 ) が得られます。
DBG> EXAMINE .%PC MOD\%LINE 5: PUSHL S^#8 DBG> |
次の例では,呼び出しスタックの 1 レベル下にある PC 値が指すソース行が得られます ( SWAP ルーチンを呼び出したとき )。
DBG> EXAMINE/SOURCE .1\%PC module MAIN MAIN\%LINE 134: SWAP(X,Y); DBG> |
次の例では,ポインタ変数 PTR の値が 16 進数 7FF00000 であり,検査しようとしている要素のアドレスです。また,この要素の値は 16 進数の 3FF00000 です。次のコマンドは,この要素を検査する方法を示します。
DBG> EXAMINE/LONG .PTR 7FF00000: 3FF00000 DBG> |
次の例では,内容演算子 ( アットマークまたはピリオド ) と現在の記憶位置演算子 ( ピリオド ) を使用して,3 つのクォドワード整数ポインタ変数がリンクされたリスト ( 次の図の L1,L2,L3 ) を検査します。P はリストの開始点へのポインタです。各ポインタ変数の上の方のロングワードには次の変数のアドレスが入り,下の方のロングワードには整数値 ( それぞれ 8,6,12 ) が入っています。
DBG> SET TYPE QUADWORD; SET RADIX HEX DBG> EXAMINE .P ! アドレスが P に入っている要素を ! 検査する。 00009BC2: 00000008 00009BDA ! 高位のワードには値 8 が,低位のワードには ! 次の要素のアドレス (9BDA) が入っている。 DBG> EXAMINE @. ! アドレスが現在の ! 要素に入っている要素を検査する。 00009BDA: 00000006 00009BF4 ! 高位のワードには値 6 が,低位のワードには ! 次の要素のアドレス (9BF4) が入っている。 DBG> EXAMINE .. ! アドレスが現在の ! 要素に入っている要素を検査する。 00009BF4: 0000000C 00000000 ! 高位のワードには値 12 (10 進数) が,低位の ! ワードにはアドレス 0(リストの終わり) が入っている。 |
次の例は,ビット・フィールド演算子の使い方を示しています。たとえば,ビット 3 で始まり,長さが 4 ビット,符号拡張子がないアドレス式 X_NAME を検査するには,次のコマンドを入力します。
DBG> EXAMINE X_NAME <3,4,0> |
次の組み込みシンボルを使用すると,現在の例外についての情報を入手したり,その情報を使用してブレークポイントまたはトレースポイントを修飾したりできます。
シンボル | 機能 |
---|---|
%EXC_FACILITY | 現在の例外を発生させたファシリティの名前 |
%EXC_NAME | 現在の例外の名前 |
%ADAEXC_NAME | 現在の例外の Ada 例外名 (Ada プログラム専用) |
%EXC_NUMBER | 現在の例外の番号 |
%EXC_SEVERITY | 現在の例外の重大度コード |
次に例を示します。
DBG> EVALUATE %EXC_NAME "FLTDIV_F" DBG> SET BREAK/EXCEPTION WHEN (%EXC_NAME = "FLTDIV_F") . . . DBG> EVALUATE %EXC_NUMBER 12 DBG> EVALUATE/CONDITION_VALUE %EXC_NUMBER %SYSTEM-F-ACCVIO, access violation at PC !XL, virtual address !XL DBG> SET BREAK/EXCEPTION WHEN (%EXC_NUMBER = 12) |
WHEN 句の条件式は,言語によって異なります。
B.3.9 呼び出しスタック上の現在の有効範囲,次の有効範囲,前の有効範囲の指定
次の組み込みシンボルを使用すると,シンボル検索の有効範囲およびルーチン呼び出しスタックに関するソース表示と機械語命令ディスプレイの有効範囲を入手し,操作することができます。
組み込みシンボル | 機能 |
---|---|
%CURRENT_SCOPE_ENTRY | ソース・コードまたはデコードした命令を表示するときか,シンボルを検索するときに,デバッガが参照用に現在使用している呼び出しフレーム。省略時の設定は,呼び出しフレーム 0 である。 |
%NEXT_SCOPE_ENTRY | 呼び出しスタックで,%CURRENT_SCOPE_ENTRY が示す呼び出しフレームの下にある次の呼び出しフレーム。 |
%PREVIOUS_SCOPE_ENTRY | 呼び出しスタックで, %CURRENT_SCOPE_ENTRY が示す呼び出しフレームの上にある次の呼び出しフレーム。 |
これらのシンボルは,呼び出しスタック上の呼び出しフレームを示す整数値を返します。呼び出しフレーム 0 は,スタックの一番上にあるルーチンを示します。ここで実行が中断されています。呼び出しフレーム 1 は呼び出しルーチンを示します。
たとえば,次のコマンドは,デバッガが呼び出しスタックの 1 つ下のルーチンが示す有効範囲で始まるシンボル ( 呼び出しスタックの一番上にあるルーチンから始まるのではない ) を検索することを指定します。
DBG> SET SCOPE/CURRENT %NEXT_SCOPE_ENTRY |
目次 | 索引 |
|