前へ | 次へ | 目次 | 索引 |
Ada プログラムでパス名(Ada の展開された名前を含む)を指定しなかった場合,デバッガは次のように実行時シンボル・テーブルを検索します。
%DEBUG-E-NOUNIQUE, symbol 'X' is not unique |
ユーザまたはデバッガが Ada のモジュールを設定するときに,省略時設定では,デバッガが "関連" モジュールもすべて設定します。この関連モジュールとは,設定されるモジュールの中でシンボルが可視でなければならないモジュールを指します。これらの関連モジュールは,with 句またはサブユニット関係のどちらかで設定されるモジュールに関連づけられます。
関連モジュールの設定は次のように行われます。設定されるモジュールが M1 である場合,次の各モジュールが関連しているとみなされ,設定されます。
P1 の仕様が with 句で P2 パッケージを指定している場合は,P2 の仕様も設定されます。同様に,P2 の仕様が with 句で P3 パッケージを指定している場合は P3 の仕様も設定され,同じように設定されていきます。このようなライブラリ・パッケージはすべて,それらの仕様が設定されるので,他のパッケージで宣言されているデータ構成要素(たとえばレコードの構成要素)をアクセスすることができます。
多くのモジュールが設定されることでデバッガの性能に問題が生じるときは,SET MODE NODYNAMIC コマンドを使用してください。このコマンドで,動的モジュールの設定が禁止されるとともに,関連モジュールの設定が禁止されます。そのあとで SET MODULE コマンドを使用して,個々のモジュールを明示的に設定する必要があります。
省略時の SET MODULE コマンドでは,コマンドで指定したモジュールと同時に関連モジュールが設定されます。
SET MODULE/NORELATED コマンドは,明示的に指定されたモジュールのみを設定します。ただし,SET MODULE/NORELATED を使用すると,別のユニットで宣言されており,実行の時点で可視状態になっているべきシンボルが可視状態でなくなっていたり,同じシンボルの再宣言によって隠蔽されているべきシンボルが可視状態になっていたりすることがあります。
CANCEL MODULE/NORELATED コマンドで RST から削除されるのは,明示的に指定したモジュールだけです。省略時設定の CANCEL MODULE/NORELATED コマンドは,Ada の有効範囲規則と可視性の規則の目的に合致した方法で関連モジュールを削除します。正確な効果はモジュールの関連性に依存します。
サブユニットの関連と直接関連の違いは,ライブラリ・パッケージの関連の違いと同様です。
C.2.14.1 パッケージ本体のためのモジュールの設定
デバッガは,パッケージ本体のためのモジュールを自動的には設定しません。
パッケージ本体をデバッグするには,または,対応するパッケージ仕様の中で宣言されているサブプログラムをデバッグするには,ユーザが自分でライブラリ・パッケージ本体のためのモジュールを設定しなければならない場合があります。
C.2.15 オーバロードされた名前とシンボルの解決
オーバロードされた名前やシンボルが現れると,次のようなメッセージが表示されます。
%DEBUG-E-NOTUNQOVR, symbol 'ADD' is overloaded use SHOW SYMBOL to find the unique symbol names |
オーバロードされたシンボルが列挙リテラルである場合は,オーバロードを解決するために,型明示式を使用することができます。
オーバロードされたシンボルがサブプログラムまたはタスクの accept 文を表す場合は,コンパイラがデバッガ用に作成する固有の名前を使用することができます。名前は,あとでパッケージ本体でオーバロードされることがあるので,コンパイラは必ず各サブプログラム固有の名前をライブラリ・パッケージの仕様に作成します。タスクの accept 文やサブプログラムが他の場所で宣言されているときは,タスクの accept 文やサブプログラムが実際にオーバロードされる場合にだけ,固有の名前が作成されます。
オーバロードされたタスクの accept 文とサブプログラムの名前は,2 つのアンダスコアとそれに続く整数からなる接尾辞によって区別されます。それぞれのシンボルは,この整数で別々のものとして示されます。名前がオーバロードされているサブプログラムを別々のものとして指定するには,固有の名前を表記してデバッガ・コマンドを使用する必要があります。しかし,あいまいさがない場合は,固有の名前が作成されてもその名前を使用する必要はありません。
C.2.16 CALLコマンド
Ada プログラムで確実に CALL コマンドを使用できるのは,エクスポートされているサブプログラムでこのコマンドを使用する場合だけです。エクスポートされるサブプログラムは,ライブラリのサブプログラムであるか,またはライブラリ・パッケージの最も外側にある宣言部で宣言されている必要があります。
CALL コマンドは,サブプログラムをエクスポートできるかどうかはチェックしません。また,ユーザが指定するパラメータの受け渡し方式もチェックしません。パラメータの値を変更するために CALL コマンドを使用することはできませんので注意してください。
Ada の実行時ライブラリを実行中に CALL コマンドを入力するとデッドロックを起こすことがあります。実行時ライブラリ・ルーチンは,タスキング環境で実行時ライブラリ・ルーチンを作動可能にする内部ロックを取得および解放します。デッドロックを生じる可能性があるのは,CALL コマンドから呼び出されたサブプログラムが,実行中の実行時ライブラリ・ルーチンによってロックされている資源を要求するときです。非タスキング・プログラムにおいてこういった状況が生じないようにするには,Ada の文を実行する直前,または実行した直後に CALL コマンドを入力してください。しかし,この方法では,タスキング・プログラムでのデッドロックの発生を完全に防ぐことはできません。呼び出しの時点で他の何らかのタスクが実行時ライブラリ・ルーチンを実行している可能性があるからです。タスキング・プログラムで CALL コマンドを使用しなければならない場合は,呼び出されるサブプログラムがタスキング操作や入出力操作を何も実行しないようにすると,デッドロックを避けることができます。
C.3 BASIC
次の各サブトピックでは,デバッガによる BASIC のサポートについて説明します。
C.3.1 言語式の演算子
言語式でサポートされている BASIC の演算子を次に示します。
種類 | シンボル | 機能 |
---|---|---|
接頭辞 | + | 単項正符号 |
接頭辞 | - | 単項負符号(否定) |
挿入辞 | + | 加算,文字列の連結 |
挿入辞 | - | 減算 |
挿入辞 | * | 乗算 |
挿入辞 | / | 除算 |
挿入辞 | ** | べき乗 |
挿入辞 | ^ | べき乗 |
挿入辞 | = | 等値 |
挿入辞 | <> | 不等 |
挿入辞 | >< | 不等 |
挿入辞 | > | 大なり |
挿入辞 | >= | 以上 |
挿入辞 | => | 以上 |
挿入辞 | < | 小なり |
挿入辞 | <= | 以下 |
挿入辞 | =< | 以下 |
接頭辞 | NOT | ビット単位のNOT |
挿入辞 | AND | ビット単位のAND |
挿入辞 | OR | ビット単位のOR |
挿入辞 | XOR | ビット単位の排他的論理和 |
挿入辞 | IMP | ビット単位の含意 |
挿入辞 | EQV | ビット単位の同値 |
サポートされている,BASIC の言語式とアドレス式の構造を次に示します。
シンボル | 構造 |
---|---|
() | 添字指定 |
:: | レコードの構成要素の選択 |
サポートされている BASIC のデータ型を次に示します。
BASIC のデータ型 | VMS のデータ型名 |
---|---|
BYTE | バイト整数(B) |
WORD | ワード整数(W) |
LONG | ロングワード整数(L) |
SINGLE | F 浮動小数点数(F) |
DOUBLE | D 浮動小数点数(D) |
GFLOAT | G 浮動小数点数(G) |
HFLOAT(VAX 固有) | H 浮動小数点数(H) |
DECIMAL | パック 10 進数(P) |
STRING | ASCII テキスト(T) |
RFA | (なし) |
RECORD | (なし) |
配列 | (なし) |
BASIC 環境でプログラムに変更を加えてから,そのプログラムを保存したり置換したりしないまま,/DEBUG 修飾子を使用してコンパイルしようとすると,"Unsaved changes,no source line debugging available"(変更を保存していないのでデバッグにソース行を使用できません)という BASIC のエラーが通知されます。この問題を防ぐには,プログラムを保存または置換してから,/DEBUG 修飾子を使用してプログラムを再コンパイルしてください。
C.3.5 定数
[radix]"numeric-string"[type] という形式("12.34"GFLOAT など)や,n% という形式(整数 25 の 25% など)の BASIC の定数は,デバッガの式ではサポートされていません。
C.3.6 式の評価
BASIC 言語でオーバフローする式であっても,デバッガが評価する場合に必ずオーバフローするとはかぎりません。BASIC の規則でオーバフローになる場合でも,デバッガは数値的に正しい結果を計算しようとします。この違いは,10 進数を計算するときに特に影響があります。
C.3.7 行番号
デバッグ・セッションではソース・コード・ディスプレイに表示される連続した行番号を参照しますが,この行番号を生成するのはコンパイラです。BASIC プログラムに他のファイルからコードを取り込んだり,付加したりする場合,取り込まれたコードの行にもコンパイラによって順番に行番号が付けられます。
C.3.8 ルーチンへのステップ
STEP/INTO コマンドは,外部関数をチェックするのに便利です。しかし,内部サブルーチンや DEF で実行を停止するのにこのコマンドを使用すると,デバッガは最初に実行時ライブラリ(RTL)のルーチン内の命令をステップ実行するので,有用な情報は何も得られません。次の例では,Print_routine を呼び出す 8 行目で実行が一時停止されます。
... -> 8 GOSUB Print_routine 9 STOP ... 20 Print_routine: 21 IF Competition = Done 22 THEN PRINT "The winning ticket is #";Winning_ticket 23 ELSE PRINT "The game goes on." 24 END IF 25 RETURN |
STEP/INTO コマンドを実行すると,デバッガは適切な RTL コード内の命令をステップ実行して,表示のために使用できるソース行がないことをユーザに伝えてきます。一方,STEP コマンドだけを使用すると,デバッガは Print_routine への呼び出しを通り越して,直接ソース行の 9 行目に進みます。サブルーチンまたは DEF 関数のソース・コードをチェックするには,ルーチンのラベルにブレークポイントを設定してください。たとえば,SET BREAK PRINT_ROUTINE コマンドを入力します。こうすると,正確にルーチンの開始地点この例では 20 行目で実行を一時停止してから,コード内の命令を直接ステップ実行することができます。
C.3.9 シンボル参照
単一の BASIC プログラム内の変数名とラベル名は,すべて固有のものでなければなりません。固有でない場合,デバッガはシンボルのあいまいさを解消できません。
C.3.10 ウォッチポイント
BASIC でウォッチポイントを設定できるのは,COMMON 文または MAP 文で宣言されている変数(静的変数)に対してだけです。DECLARE 文で明示的に宣言されている変数にウォッチポイントを設定することはできません。
C.4 BLISS
次の各サブトピックでは,デバッガによる BLISS のサポートについて説明します。
C.4.1 言語式の演算子
言語式でサポートされている BLISS の演算子を次に示します。
種類 | シンボル | 機能 |
---|---|---|
接頭辞 | . | 間接参照 |
接頭辞 | + | 単項正符号 |
接頭辞 | - | 単項負符号(否定) |
挿入辞 | + | 加算 |
挿入辞 | - | 減算 |
挿入辞 | * | 乗算 |
挿入辞 | / | 除算 |
挿入辞 | MOD | 剰余 |
挿入辞 | ^ | 左シフト |
挿入辞 | EQL | 等値 |
挿入辞 | EQLU | 等値 |
挿入辞 | EQLA | 等値 |
挿入辞 | NEQ | 不等 |
挿入辞 | NEQU | 不等 |
挿入辞 | NEQA | 不等 |
挿入辞 | GTR | 大なり |
挿入辞 | GTRU | 大なり符号なし |
挿入辞 | GTRA | 大なり符号なし |
挿入辞 | GEQ | 以上 |
挿入辞 | GEQU | 以上符号なし |
挿入辞 | GEQA | 以上符号なし |
挿入辞 | LSS | 小なり |
挿入辞 | LSSU | 小なり符号なし |
挿入辞 | LSSA | 小なり符号なし |
挿入辞 | LEQ | 以下 |
挿入辞 | LEQU | 以下符号なし |
挿入辞 | LEQA | 以下符号なし |
接頭辞 | NOT | ビット単位のNOT |
挿入辞 | AND | ビット単位のAND |
挿入辞 | OR | ビット単位のOR |
挿入辞 | XOR | ビット単位の排他的OR |
挿入辞 | EQV | ビット単位の同値 |
前へ | 次へ | 目次 | 索引 |