Compaq OpenVMS
デバッガ説明書


前へ 次へ 目次 索引


C.2.1.2 定義済みの属性

サポートされている Ada の定義済みの属性を次に示します。デバッガの SHOW SYMBOL/TYPE コマンドで得られる情報は,属性 P'FIRST,P'LAST,P'LENGTH,P'SIZE,および P'CONSTRAINED によって得られる情報と同じですので注意してください。

属性 デバッガのサポート
P'CONSTRAINED 接頭辞Pが,判別子の付いたレコード・オブジェクトを表す場合。P'CONSTRAINED の値は,P の現在の状態(制約付き,または制約なし)を表す。
P'FIRST 接頭辞 P が列挙型または列挙型の部分型を表す場合。P の下限を示す。
P'FIRST 接頭辞 P が配列型に対応しているか,制約付き配列の部分型を表す場合。最初の添字範囲の下限を示す。
P'FIRST(N) 接頭辞 P が配列型に対応しているか,制約付き配列の部分型を表す場合。N 番目の添字範囲の下限を示す。
P'LAST 接頭辞 P が列挙型または列挙型の部分型を表す場合。P の上限を示す。
P'LAST 接頭辞 P が配列型に対応しているか,制約付き配列の部分型を表す場合。最初の添字範囲の上限を示す。
P'LAST(N) 接頭辞 P が配列型に対応しているか,制約付き配列の部分型を表す場合。N 番目の添字範囲の上限を示す。
P'LENGTH 接頭辞 P が配列型に対応しているか,制約付き配列の部分型を表す場合。最初の添字範囲の値の個数を示す(範囲が空の場合はゼロ)。
P'LENGTH(N) 接頭辞 P が配列型に対応しているか,制約付き配列の部分型を表す場合。N 番目の添字範囲の値の個数を示す(範囲が空の場合はゼロ)。
P'POS(X) 接頭辞 P が列挙型または列挙型の部分型を表す場合。値 X の位置番号を示す。最初の位置番号は 0。
P'PRED(X) 接頭辞 P が列挙型または列挙型の部分型を表す場合。位置番号が X より 1 小さい P 型の値を示す。
P'SIZE 接頭辞 P がオブジェクトを示す場合。オブジェクトを保持するために割り当てられたビット数を示す。
P'SUCC(X) 接頭辞 P が列挙型または列挙型の部分型を表す場合。位置番号が X より 1 大きい P 型の値を示す。
P'VAL(N) 接頭辞 P が列挙型または列挙型の部分型を表す場合。位置番号が N の P 型の値を示す。最初の位置番号は 0。

C.2.1.2.1 列挙型の属性の指定

次の宣言について考えます。


type DAY is
  (MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY); 
MY_DAY : DAY; 

列挙型の属性の使用例を次に示します。属性の値を確認するのに EXAMINE コマンドを使用することはできませんので注意してください。これは属性が変数名ではないためです。属性の値を確認するときは,代わりに EVALUATE コマンドを使用してください。これと同じ理由から,DEPOSIT コマンドでは属性を := 演算子の右辺にしか置けません。


DBG> EVALUATE DAY'FIRST
MON
DBG> EVALUATE DAY'POS(WEDNESDAY)
2
DBG> EVALUATE DAY'VAL(4)
FRI
DBG> DEPOSIT MY_DAY := TUESDAY
DBG> EVALUATE DAY'SUCC(MY_DAY)
WED
DBG> DEPOSIT . := DAY'PRED(MY_DAY)
DBG> EXAMINE .
EXAMPLE.MY_DAY: MONDAY
DBG> EVALUATE DAY'PRED(MY_DAY)
%DEBUG-W-ILLENUMVAL, enumeration value out of legal range

C.2.1.2.2 オーバロードされた列挙リテラルの解決

次の宣言について考えます。


type MASK is(DEC,FIX,EXP); 
type CODE is(FIX,CLA,DEC); 
MY_MASK : MASK; 
MY_CODE : CODE; 

次の例では,オーバロードされた列挙リテラル FIX を型明示式 CODE'(FIX)で解決します。この列挙リテラル FIX は CODE 型と MASK 型の両方に属しています。


DBG> DEPOSIT MY_CODE := FIX
%DEBUG-W-NOUNIQUE, symbol 'FIX' is not unique
DBG> SHOW SYMBOL/TYPE FIX
data EXAMPLE.FIX 
    enumeration type(CODE, 3 elements), size: 1 byte 
data EXAMPLE.FIX 
    enumeration type(MASK, 3 elements), size: 1 byte
DBG> DEPOSIT MY_CODE := CODE'(FIX)
DBG> EXAMINE MY_CODE
EXAMPLE.MY_CODE:        FIX

C.2.2 演算子と式

次の節では,Ada の演算子と言語式に関するデバッガのサポートについて説明します。

C.2.2.1 言語式の演算子

サポートされているAdaの言語式の演算子を次に示します。

種類 シンボル 機能
接頭辞 + 単項正符号(一致)
接頭辞 - 単項負符号(否定)
挿入辞 + 加算
挿入辞 - 減算
挿入辞 * 乗算
挿入辞 / 除算
挿入辞 MOD モジュロ
挿入辞 REM 剰余
挿入辞 ** べき乗(VAX 固有)
接頭辞 ABS 絶対値
挿入辞 & 連結(文字列型のみ)
挿入辞 = 等値(スカラ型および文字列型のみ)
挿入辞 /= 不等(スカラ型および文字列型のみ)
挿入辞 > 大なり(スカラ型および文字列型のみ)
挿入辞 >= 以上(スカラ型および文字列型のみ)
挿入辞 < 小なり(スカラ型および文字列型のみ)
挿入辞 <= 以下(スカラ型および文字列型のみ)
接頭辞 NOT 論理否定
挿入辞 AND 論理積(ビット配列以外の場合)
挿入辞 OR 論理和(ビット配列以外の場合)
挿入辞 XOR 排他的論理和(ビット配列以外の場合)

次に示す項目はサポートされていません。

C.2.2.2 言語式

サポートされている Ada の式を次に示します。

式の種類 デバッガのサポート
型変換 Ada で指定された明示的な型変換はどれもサポートしていない。しかし,デバッガが式を評価するときは数値型の間で特定の型変換が暗黙に行われる。

精度の異なる型が式に含まれている場合,デバッガは式を評価する前に,精度の低い型を精度の高い型に変換する。

  • 整数型と浮動小数点数型が混在しているときは,整数型が浮動小数点数型に変換される。

  • 整数型と固定小数点数型が混在しているときは,整数型が固定小数点数型に変換される。

  • サイズの異なる整数型(たとえば,バイト整数とワード整数)が混在しているときは,サイズの小さい整数型が大きい整数型に変換される。
部分型 完全にサポートしている。ただし,デバッガは,部分型および範囲の制約がある型を"部分範囲" 型として示す。
型明示式 オーバロードされた列挙リテラル(識別子は同じだが,異なる列挙型に含まれるリテラル)を解決しなければならないので,サポートしている。それ以外の目的では型明示式をサポートしていない。
アロケータ アロケータを使用する演算は何もサポートしていない。
ユニバーサル式 サポートしていない。

C.2.3 データ型

サポートされている Ada のデータ型を次に示します。

Ada のデータ型 VMS のデータ型名
INTEGER ロングワード整数(L)
SHORT_INTEGER ワード整数(W)
SHORT_SHORT_INTEGER バイト整数(B)
SYSTEM.UNSIGNED_QUADWORD クォドワード符号なし(QU)
SYSTEM.UNSIGNED_LONGWORD ロングワード符号なし(LU)
SYSTEM.UNSIGNED_WORD ワード符号なし(WU)
SYSTEM.UNSIGNED_BYTE バイト符号なし(BU)
FLOAT F浮動小数点数(F)
SYSTEM.F_FLOAT F浮動小数点数(F)
SYSTEM.D_FLOAT D浮動小数点数(D)
LONG_FLOAT LONG_FLOAT(D_FLOAT)プラグマが有効のときは,D浮動小数点数(D)。
LONG_FLOAT(G_FLOAT)プラグマが有効のときは,G浮動小数点数(G)。
SYSTEM.G_FLOAT G浮動小数点数(G)
SYSTEM.H_FLOAT(VAX 固有) H浮動小数点数(H)
LONG_LONG_FLOAT(VAX 固有) H浮動小数点数(H)
IEEE_SINGLE_FLOAT(Alpha 固有) S浮動小数点数(FS)
IEEE_DOUBLE_FLOAT(Alpha 固有) T浮動小数点数(FT)
固定 (なし)
STRING ASCIIテキスト(T)
BOOLEAN 境界合わせされたビット列(V)
BOOLEAN 境界合わせされていないビット列(VU)
列挙 値が符号なしバイトと一致する列挙型は,バイト符号なし(BU)。値が符号なしワードと一致する列挙型は,ワード符号なし(WU)。それ以外の列挙型に対応するオペレーティング・システムのデータ型はない。
配列 (なし)
レコード (なし)
アクセス(ポインタ) (なし)
タスク (なし)

C.2.4 コンパイルとリンク

ユーザのシステムのプログラム・ライブラリ ADA$PREDEFINED にある,Ada の定義済みユニットは /NODEBUG 修飾子を使用してコンパイルされています。定義済みユニットの中で宣言されている名前をデバッガで参照するにはその前に,定義済みユニットのソース・ファイルを ACS EXTRACT SOURCE コマンドでコピーしなければなりません。そして,コピーしたファイルを /DEBUG 修飾子を使用してコンパイルし,適切なライブラリにしてから,/DEBUG 修飾子を付けてプログラムを再リンクする必要があります。

Ada の各コンパイル・コマンドで /NODEBUG 修飾子を使用した場合,デバッグのためにモジュールに含まれるのはグローバル・シンボル・レコードだけです。このときのグローバル・シンボルは,プログラムが他言語のモジュールへエクスポートする名前です。プログラムは次の Ada のエクスポート・プラグマを使用して名前をエクスポートします。

EXPORT_PROCEDURE
EXPORT_VALUED_PROCEDURE
EXPORT_FUNCTION
EXPORT_OBJECT
EXPORT_EXCEPTION
PSECT_OBJECT

ACS LINK コマンドで /DEBUG 修飾子を使用すると,リンカは,実行可能なイメージ内の特定のユニットのクロージャにデバッグの情報をすべて含めます。

C.2.5 ソースの表示

Ada プログラム固有の次の理由から,ソース・コードを表示できないことがあります。

Ada プログラムでソース・コードの表示を制御する方法を次に説明します。

コンパイラ・コマンドの /COPY_SOURCE 修飾子(省略時設定)が有効な状態でプログラムをコンパイルした場合,表示される Ada のソース・コードは,プログラムを新しくコンパイルしたときのプログラム・ライブラリにあるソース・ファイルをコピーして取得されます。/NOCOPY_SOURCE 修飾子を使用してプログラムをコンパイルした場合,表示されるソース・コードは,プログラムのコンパイル単位に対応する外部ソース・ファイルから取得されます。

コピーされるソース・ファイルのファイル指定,または外部ソース・ファイルのファイル指定は,対応するオブジェクト・ファイルに埋め込まれています。たとえば,コンパイル単位をコピーするのに ACS の COPY UNIT コマンドを使用しても,あるいは,ライブラリ全体をコピーするのに DCL の COPY コマンドか BACKUP コマンドを使用しても,デバッガはコピーされたソース・ファイルから元のプログラム・ライブラリを検索します。コピー後に元のコンパイル単位を修正した場合,またはコピー後に元のライブラリを削除した場合,デバッガはコピーされた元のソース・ファイルを見つけることができません。同様に,外部ソース・ファイルを別のディスクやディレクトリに移動したときも,デバッガは元のソース・ファイルを見つけられません。

このような場合は,ソースの表示のための正しいファイルを検索するために,SET SOURCE コマンドを使用します。プログラム・ライブラリやソース・コードの複数のディレクトリを示す検索リストを指定することができます。次に例を示します。ADA$LIB は,プログラム・ライブラリ・マネージャが現在のプログラム・ライブラリと等しく定義する論理名です。


DBG> SET SOURCE ADA$LIB,DISK:[SMITH.SHARE.ADALIB]

ユーザがデバッガの EDIT コマンドを使用するときにデバッガが取り出す外部ソース・ファイルを検索するための検索リストは,SET SOURCE コマンドでは変更されません。ソース・ファイルを検索する場所を EDIT コマンドで指定するときは,SET SOURCE/EDIT コマンドを使用します。

C.2.6 EDITコマンド

Ada プログラムで省略時にデバッガの EDIT コマンドが取り出す外部ソース・ファイルは,実行を現在一時停止しているコンパイル単位を作成するためにコンパイルされた外部ソース・ファイルです。プログラム・ライブラリ内のコピーされたソース・ファイルは編集しないでください。デバッガはこのソース・ファイルをソースの表示のために使用します。

編集するソース・ファイルのファイル指定は,コンパイル中に,対応するオブジェクト・ファイルに埋め込まれます(/NODEBUG を指定しなかった場合)。コンパイル後にソース・ファイルの配置場所を変更すると,デバッガがそれらのソース・ファイルを見つけられなくなります。

配置場所を変更したときは,デバッガの SET SOURCE/EDIT コマンドを使用すると,デバッガがソース・ファイルを検索する,1 つまたは複数のディレクトリからなる検索リストを指定することができます。次に例を示します。


DBG> SET SOURCE/EDIT [],USER:[JONES.PROJ.SOURCES]

SET SOURCE/EDIT コマンドを使用しても,デバッガがソースの表示に使用するコピー元のソース・ファイルを検索するための検索リストは変更されません。

SHOW SOURCE/EDIT コマンドを使用すると,現在 EDIT コマンドで使用中のソース・ファイル検索リストが表示されます。CANCEL SOURCE/EDIT コマンドを使用すると,現在 EDIT コマンドで使用中のソース・ファイル検索リストが取り消され,省略時の検索モードに戻ります。


前へ 次へ 目次 索引