Compaq OpenVMS
デバッガ説明書


前へ 次へ 目次 索引



付録 B
組み込みシンボルと論理名

この付録では,デバッガのすべての組み込みシンボルと論理名を示します。

B.1 SS$_DEBUG 条件

SS$_DEBUG(SYS$LIBRARY:STARLET.OLB で定義される)は,プログラムからデバッガを起動するようにシグナル通知する場合の条件です。プログラムから SS$_DEBUG をシグナル通知するのは,Ctrl/Y を押したあとに DCL コマンド DEBUG を入力することと同じです。

コマンドを SS$_DEBUG とともにシグナル通知して,デバッガにコマンドを渡すことができます。デバッガに実行させたいコマンドの形式は,DBG> プロンプトに対して入力するコマンドの形式と同じにしてください。複数のコマンドを指定する場合は,セミコロンで区切らなければなりません。また,コマンドは ASCIC 文字列として参照渡しで渡さなければなりません。ASCIC 文字列を作成する方法についての詳しい説明は,各言語のドキュメントを参照してください。

たとえば,プログラムのある地点でデバッガを起動して SHOW CALLS コマンドを入力するには,次のコードをプログラムに挿入します(BLISS の例)。


LIB$SIGNAL(SS$_DEBUG, 1, UPLIT BYTE(%ASCIC 'SHOW CALLS')); 

SS$_DEBUG の定義は,言語により STARLET ファイルまたは SYSDEF ファイル(たとえば,BLISS の STARLET.L32,または Fortran の FORSYSDEF.TLB)からコンパイルするときに得ることができます。また,リンク時に SYS$LIBRARY:STARLET.OLB から SS$_DEBUG の定義を得ることもできますが,この方法はなるべく使用しないでください。

B.2 論理名

デバッガ固有の論理名を次の表に示します。

論理名 機能
DBG$DECW$DISPLAY Compaq DECwindows Motif for OpenVMS を実行しているワークステーションにだけ適用される。デバッガ・インタフェース(Compaq DECwindows Motif for OpenVMS またはコマンド)またはディスプレイ装置を指定する。省略時の設定: DBG$DECW$DISPLAY は未定義であるか,またはアプリケーション単位の論理名 DECW$DISPLAY 定義と同じ定義である。

Compaq DECwindows Motif for OpenVMS 環境でデバッガの省略時のインタフェースを変更するために,DBG$DECW$DISPLAY を使用する方法については,第 9.7.3 項 を参照。

DBG$IMAGE_DSF_PATH (Alpha のみ)デバッグするイメージの .DSF(デバッグ・シンボル・テーブル)ファイルを格納するディレクトリを指定する。各 .DSF ファイルのファイル名は,デバッグするイメージのファイル名と同じでなければならない。.DSF ファイルの作成の詳細については,第 5.1.5 項 を参照。
DBG$INIT デバッガの初期化ファイルを指定する。省略時の設定では,デバッガの初期化ファイルはない。DBG$INIT は,検索リストだけでなく,ファイルの完全指定でも部分指定でもよい。デバッガの初期化ファイルについての詳しい説明は,第 13.2 節 を参照。
DBG$INPUT デバッガの入力装置を指定する。省略時の設定は SYS$INPUT である。DBG$INPUT と DBG$OUTPUT を使用して 2 つの端末で画面用プログラムをデバッグする方法についての詳しい説明は,第 14.2 節 を参照。

DBG$INPUT は Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースでは無視される(DBG$DECW$DISPLAY を参照)。DECterm ウィンドウでデバッガのコマンド・インタフェースを表示中であれば,DBG$INPUT を使用できる。

DBG$OUTPUT デバッガの出力装置を指定する。省略時の設定は SYS$OUTPUT である。DBG$INPUT と DBG$OUTPUT を使用して 2 つの端末で画面用プログラムをデバッグする方法については,第 14.2 節 を参照。

Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースでは DBG$OUTPUT は無視される(DBG$DECW$DISPLAY を参照)。DECterm ウィンドウでデバッガのコマンド・インタフェースを表示中であれば,DBG$OUTPUT を使用できる。

SSI$AUTO_ACTIVATE (Alpha のみ)システム・サービス・インターセプション(SSI)が有効であるかどうか指定する。ウォッチポイントで問題がある場合は,次の DCL コマンドを入力し,SSI を無効にする。
 $DEFINE SSI$AUTO_ACTIVATE OFF

静的ウォッチポイント,AST,システム・サービス・インターセプションの相互関係については,SET WATCH の説明を参照。

論理名に値を割り当てるには,DCL コマンド DEFINE または ASSIGN を使用します。たとえば,次のコマンドは,デバッガの初期化ファイルの記憶位置を指定します。


$ DEFINE DBG$INIT DISK$:[JONES.COMFILES]DEBUGINIT.COM

論理名 DBG$INPUT については,次の点に注意してください。ファイル(たとえば PROG_IN.DAT)から入力を得るプログラムおよび,端末からデバッガ入力を得るプログラムをデバッグする場合は,次のように定義してから,デバッガを起動しなければなりません。


$ DEFINE SYS$INPUT PROG_IN.DAT
$ DEFINE/PROCESS DBG$INPUT 'F$LOGICAL("SYS$COMMAND")

すなわち,SYS$COMMAND の変換を指すように DBG$INPUT を定義します。SYS$COMMAND を指すように DBG$INPUT を定義すると,デバッガは PROG_IN.DAT ファイルから入力を得ようとします。

B.3 組み込みシンボル

デバッガの組み込みシンボルは,プログラムの要素と値を指定するオプションです。

デバッガのほとんどの組み込みシンボルには,パーセント記号接頭辞(%)があります。

この付録では,次のシンボルについて説明します。

B.3.1 レジスタの指定

VAX レジスタまたは Alpha レジスタのデバッガ組み込みシンボルは,レジスタ名の前にパーセント記号(%)がついたものです。レジスタ・シンボルを指定する場合,同じ名前のシンボルをプログラムが宣言していなければパーセント記号(%)を前につける必要はありません。 表 B-1 に,VAX レジスタ・シンボルを示します。

表 B-1 VAX レジスタのデバッガ・シンボル(VAX のみ)
シンボル 機能
VAX 汎用レジスタ
%R0...%R11 汎用レジスタ(R0...R11)
%AP(%R12) 引数ポインタ(AP)
%FP(%R13) フレーム・ポインタ(FP)
%SP(%R14) スタック・ポインタ(SP)
%PC(%R15) プログラム・カウンタ(PC)
%PSL プロセッサ・ステータス・ロングワード(PSL)
VAX ベクタ・レジスタとベクタ制御レジスタ
%V0...%V15 ベクタ・レジスタ V0...V15
%VCR ベクタ数レジスタ
%VLR ベクタ長レジスタ
%VMR ベクタ・マスク・レジスタ

すべてのレジスタの内容を検査できます。また,SP を除くすべてのレジスタに値を格納することもできます。ただし,FP に値を格納するときは注意してください。

VAX 汎用レジスタについての詳しい説明は,第 4.4 節第 4.4.1 項 を参照してください。また,VAX ベクタ・レジスタについての詳しい説明は,第 16 章 を参照してください。

表 B-2 に Alpha レジスタ・シンボルを示します。

表 B-2 Alpha レジスタのデバッガ・シンボル(Alpha のみ)
シンボル 機能
Alpha 整数レジスタ
%R0...%R28 レジスタ R0...R28
%FP(%R29) スタック・フレーム基底レジスタ(FP)
%SP(%R30) スタック・ポインタ(SP)
%R31 ReadAsZero/Sink(RZ)
%PC プログラム・カウンタ(PC)
%PS プロセッサ・ステータス・レジスタ(PS)。組み込みシンボル %PSL と %PSW は Alpha プロセッサでは使用できない。
Alpha 浮動小数点レジスタ
%F0...%F30 レジスタ F0...F30
%F31 ReadAsZero/Sink

Alpha プロセッサの場合

Alpha 汎用レジスタについての詳しい説明は,第 4.4 節第 4.4.2 項 を参照してください。

B.3.2 識別子の作成

組み込みシンボル %NAME を使用すると,現在の言語では通常は使用できない識別子を作成できます。この場合の構文は次のとおりです。


%NAME 'character-string' 

次の例では,'12' という名前の変数を調べます。


DBG> EXAMINE %NAME '12'

次の例では,コンパイラ生成ラベル P.AAA を調べます。


DBG> EXAMINE %NAME 'P.AAA'

B.3.3 コマンド・プロシージャに渡されるパラメータの数

組み込みシンボル %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 デバッガ・インタフェース(コマンドまたは Compaq DECwindows Motif for OpenVMS )の決定

組み込みシンボル %DECWINDOWS を使用すると,デバッガの Compaq DECwindows Motif for OpenVMS インタフェースが表示されるのかコマンド・インタフェースが表示されるのかを決定できます。Compaq 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))

B.3.5 入力基数の制御

組み込みシンボル %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 進数として扱う

B.3.6 プログラム記憶位置と要素の現在値の指定

次の組み込みシンボルを使用すると,プログラム記憶位置と要素の現在値を指定できます。

シンボル 機能
%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 キーを押すことはできません。


前へ 次へ 目次 索引