C.3.14 モジュールの設定 |
|
ユーザまたはデバッガが Ada のモジュールを設定するときに,省略時設定では,デバッガが "関連" モジュールもすべて設定します。この関連モジュールとは,設定されるモジュールの中でシンボルが可視でなければならないモジュールを指します。これらの関連モジュールは,with 句またはサブユニット関係のどちらかで設定されるモジュールに関連づけられます。
関連モジュールの設定は次のように行われます。設定されるモジュールが M1 である場合,次の各モジュールが関連しているとみなされ,設定されます。
- M1 が ライブラリ本体 である場合に,対応するライブラリ仕様があれば,それも設定されます。
- M1 が サブユニット である場合,その親ユニットと,親ユニットのすべての親も設定されます。
- M1 が with 句で
ライブラリ・パッケージ P1 を指定している場合,P1 の仕様も設定されます。 P1 の本体と P1 のサブユニットの中で宣言されているシンボルは外部では可視でないので,P1 の本体と P1 のサブユニットは何も設定されません。
P1 の仕様が with 句で P2 パッケージを指定している場合は, P2 の仕様も設定されます。同様に,P2 の仕様が with 句で P3 パッケージを指定している場合は P3 の仕様も設定され,同じように設定されていきます。このようなライブラリ・パッケージはすべて,それらの仕様が設定されるので,他のパッケージで宣言されているデータ構成要素 ( たとえばレコードの構成要素 ) をアクセスすることができます。
- M1 が with 句で
ライブラリのサブプログラム を指定している場合,そのサブプログラムは
設定されません。M1 の中で可視でなければならないのはサブプログラム名だけです。ライブラリのサブプログラム内の宣言は,そのサブプログラムの外部で可視である必要はありません。したがって,デバッガがライブラリのサブプログラム名を RST に挿入するのは,M1 が設定されるときになります。
多くのモジュールが設定されることでデバッガの性能に問題が生じるときは,SET MODE NODYNAMIC コマンドを使用してください。このコマンドで,動的モジュールの設定が禁止されるとともに,関連モジュールの設定が禁止されます。そのあとで SET MODULE コマンドを使用して,個々のモジュールを明示的に設定する必要があります。
省略時の SET MODULE コマンドでは,コマンドで指定したモジュールと同時に関連モジュールが設定されます。
SET MODULE/NORELATED コマンドは,明示的に指定されたモジュールのみを設定します。ただし,SET MODULE/NORELATED を使用すると,別のユニットで宣言されており,実行の時点で可視状態になっているべきシンボルが可視状態でなくなっていたり,同じシンボルの再宣言によって隠蔽されているべきシンボルが可視状態になっていたりすることがあります。
CANCEL MODULE/NORELATED コマンドで RST から削除されるのは,明示的に指定したモジュールだけです。省略時設定の CANCEL MODULE/NORELATED コマンドは,Ada の有効範囲規則と可視性の規則の目的に合致した方法で関連モジュールを削除します。正確な効果はモジュールの関連性に依存します。
サブユニットの関連と直接関連の違いは,ライブラリ・パッケージの関連の違いと同様です。
C.3.14.1 パッケージ本体のためのモジュールの設定
デバッガは,パッケージ本体のためのモジュールを自動的には設定しません。
パッケージ本体をデバッグするには,または対応するパッケージ仕様の中で宣言されているサブプログラムをデバッグするには,ユーザが自分でライブラリ・パッケージ本体のためのモジュールを設定しなければならない場合があります。
C.3.15 オーバーロードされた名前とシンボルの解決 |
|
オーバーロードされた名前やシンボルが現れると,次のようなメッセージが表示されます。