日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
C.3.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) |
IEEE_SINGLE_FLOAT (Alpha 固有) | S浮動小数点数(FS) |
IEEE_DOUBLE_FLOAT (Alpha 固有) | T浮動小数点数(FT) |
固定 | (なし) |
STRING | ASCIIテキスト(T) |
BOOLEAN | 境界合わせされたビット列(V) |
BOOLEAN | 境界合わせされていないビット列(VU) |
列挙 | 値が符号なしバイトと一致する列挙型は,バイト符号なし(BU)。値が符号なしワードと一致する列挙型は,ワード符号なし(WU)。それ以外の列挙型に対応するオペレーティング・システムのデータ型はない。 |
配列 | (なし) |
レコード | (なし) |
アクセス(ポインタ) | (なし) |
タスク | (なし) |
DBG> SET SOURCE ADA$LIB,DISK:[SMITH.SHARE.ADALIB] |
ユーザがデバッガの EDIT コマンドを使用するときにデバッガが取り出す外部ソース・ファイルを検索するための検索リストは, SET SOURCE コマンドでは変更されません。ソース・ファイルを検索する場所を EDIT コマンドで指定するときは,SET SOURCE/EDIT コマンドを使用します。
Ada プログラムで省略時にデバッガの EDIT コマンドが取り出す外部ソース・ファイルは,実行を現在一時停止しているコンパイル単位を作成するためにコンパイルされた外部ソース・ファイルです。プログラム・ライブラリ内のコピーされたソース・ファイルは編集しないでください。デバッガはこのソース・ファイルをソースの表示のために使用します。
編集するソース・ファイルのファイル指定は,コンパイル中に,対応するオブジェクト・ファイルに埋め込まれます (/NODEBUG を指定しなかった場合)。コンパイル後にソース・ファイルの配置場所を変更すると,デバッガがそれらのソース・ファイルを見つけられなくなります。
配置場所を変更したときは,デバッガの SET SOURCE/EDIT コマンドを使用すると,デバッガがソース・ファイルを検索する,1 つまたは複数のディレクトリからなる検索リストを指定することができます。次に例を示します。
C.3.6 EDITコマンド
DBG> SET SOURCE/EDIT [],USER:[JONES.PROJ.SOURCES] |
SET SOURCE/EDIT コマンドを使用しても,デバッガがソースの表示に使用するコピー元のソース・ファイルを検索するための検索リストは変更されません。
SHOW SOURCE/EDIT コマンドを使用すると,現在 EDIT コマンドで使用中のソース・ファイル検索リストが表示されます。CANCEL SOURCE/EDIT コマンドを使用すると,現在 EDIT コマンドで使用中のソース・ファイル検索リストが取り消され,省略時の検索モードに戻ります。
Ada プログラムで GO コマンドや STEP コマンドを使用する場合は,次の点に注意してください。
C.3.7 GO コマンドと STEP コマンド
パッケージ確立フェーズを監視する方法については,オンライン・ヘルプの Debugging_Ada_Library_Packages を参照してください。
DBG> RUN FORMS Language: ADA, Module: FORMS Type GO to reach main program DBG> |
この時点で,GO と入力してメイン・プログラムを開始する前に,注目したいパッケージの仕様や本体にブレークポイントを設定することによって,ライブラリ・パッケージ内の命令を何箇所かステップ実行してチェックすることができます。その後,各パッケージを開始するために GO コマンドを使用します。パッケージの本体にブレークポイントを設定するには,SET BREAK コマンドでパッケージ単位名を指定します。パッケージの仕様にブレークポイントを設定するときは,パッケージ単位名をその後ろにアンダスコア (_) を付けて指定します。
パッケージの本体にブレークポイントを設定しても,その本体に対するデバッガのモジュールが設定されていないときはブレークされません。モジュールが設定されていない場合は,パッケージの仕様のところでブレークされます。このようになるのは,with 句の中で名前を指定されているパッケージの仕様に対するモジュールを,デバッガが自動的に設定するためです。デバッガは,対応するパッケージ本体に対するモジュールを自動的には設定しません ( 付録 C.3.14 項 を参照)。
また,パッケージの仕様の中で宣言されているサブプログラムにブレークポイントを設定するには,パッケージの本体に対するモジュールをユーザが設定する必要があります。
コンパイラは,ライブラリ・パッケージの中で宣言されているサブプログラムに固有の名前を作成しますので注意してください。これらの名前は,オーバーロードされた名前です。または,オーバーロードされた名前になることもあります。デバッガの出力には,これらの固有の名前が使用されます。また,使用しないと名前があいまいになる場合は,この固有の名前を各コマンドで使用する必要があります。オーバーロードされた名前とシンボルの解決についての詳しい説明は, 付録 C.3.15 項 を参照してください。
Ada プログラムまたは Ada のコードを呼び出すAda以外のプログラムでデバッガを起動すると,Ada のタスキング例外イベントに対応する 2 つのブレークポイントが自動的に設定されます。これらのブレークポイントは, Ada の実行時ライブラリが存在しているときに,デバッガの初期化中に自動的に設定されます。
この状況で SHOW BREAK コマンドを入力すると,次のようにブレークポイントが表示されます。
C.3.9 定義済みブレークポイント
DBG> SHOW BREAK Predefined breakpoint on ADA event "EXCEPTION_TERMINATED" for any value Predefined breakpoint on ADA event "DEPENDENTS_EXCEPTION" for any value DBG> |
DBG> SET TRACE/EXCEPTION DBG> GO ... %ADA-F-CONSTRAINT_ERRO, CONSTRAINT_ERROR -ADA-I-EXCRAIPRI, Exception raised prior to PC = 00000A7C trace on exception preceding ADA$RAISE\ADA$RAISE_CONDITION.%LINE 333+12 ... |
内部で例外が発生したサブプログラムを呼び出したとき,または例外発生の対象となったサブプログラムを呼び出したときのトレースバックを SHOW CALLS コマンドで表示する例を次に示します。
DBG> SET BREAK/EXCEPTION DO (SHOW CALLS) DBG> GO ... %SYSTEM-F-INTDIV, arithmetic trap, integer divide by zero at PC=000008AF, PSL=03C000A2 break on exception preceding SYSTEM_OPS.DIVIDE.%LINE 17+6 17: return X/Y; module name routine name line rel PC abs PC *SYSTEM_OPS DIVIDE 17 00000015 000008AF *PROCESSOR PROCESSOR 19 000000AE 00000BAD *ADA$ELAB_PROCESSOR ADA$ELAB_PROCESSOR 00000009 00000809 LIB$INITIALIZE 00000054 00000C36 SHARE$ADARTL 00000000 000398BE *ADA$ELAB_PROCESSOR ADA$ELAB_PROCESSOR 0000001B 0000081B LIB$INITIALIZE 0000002F 00000C21 |
この例では,SYSTEM_OPS パッケージの DIVIDE サブプログラムの 17 行目で SS$_INTDIV 条件が発生します。 SS$_INTDIV などのいくつかの条件は Ada のある種の定義済みの例外と等価なものとして処理されるという重要な働きを,この例は示しています。
Ada の定義済みの例外と条件を照合するのは,例外部分を持つすべてのフレーム用に Ada に備えられている条件ハンドラです。したがって,Ada の例外名と等価な名前を持った条件によって例外のブレークポイントまたはトレースポイントが検出された場合,メッセージには,システムの条件コード名
だけ が表示され,対応する Ada の例外名は表示されません。
例外が発生すると,デバッガは次の組み込みシンボルを設定します。この組み込みシンボルを使用すると,特定の例外が発生したときだけ検出されるように,例外のブレークポイントやトレースポイントを指定することができます。
C.3.10.2 特定の例外の監視
%EXC_FACILITY | 例外を生じたファシリティの名前を示す文字列。Ada の定義済みの例外およびユーザ定義の例外のファシリティ名は,ADA。 |
%EXC_NAME | 例外名を示す大文字の文字列。発生した例外が Ada の定義済みの例外の場合,15 文字を超える分の名前は切り捨てられる。たとえば,CONSTRAINT_ERROR は切り捨てられ, CONSTRAINT_ERRO になる。発生した例外がユーザ定義の例外の場合, %EXC_NAME には "EXCEPTION" という文字列が入り,ユーザ定義の例外名は %ADAEXC_NAME に入る。 |
%ADAEXC_NAME | 発生した例外がユーザ定義の例外の場合, %ADAEXC_NAME にはその例外名を示す文字列が入り,%EXC_NAME には "EXCEPTION" という文字列が入る。発生した例外がユーザ定義の例外ではない場合,%ADAEXC_NAME には空文字列が入り,%EXC_NAME に例外名が入る。 |
%EXC_NUM | 例外の個数。 |
%EXC_SEVERITY | 例外の重大度を示す文字列 ( F,E,W,I,S,または ?)。 |
目次 | 索引 |
|