前へ | 次へ | 目次 | 索引 |
プログラム内のルーチンをデバッグしているときに,現在の有効範囲を呼び出し元ルーチン(スタックで,現在実行が一時停止しているルーチンより下にあるルーチン)に設定することができます。これにより,次のことが可能になります。
メイン・ウィンドウの「Call Stack」メニューには,スタックで現在アクティブなプログラム・ルーチン(および,特定の条件下でのイメージとモジュール)の名前が,画面に表示できる最大行数まで一覧表示されます(図 10-19 を参照)。メニューの左側の番号は,実行が一時停止しているルーチンをレベル 0 としたときのスタックの各ルーチンのレベルです。
現在の有効範囲をスタックの特定のルーチンに設定するには,「Call Stack」メニュー(図 10-19 を参照)。からその名前を選択します。すると,次の処理が行われます。
図 10-19 現在の有効範囲を呼び出し元ルーチンに設定する
有効範囲をある呼び出し元ルーチンに設定すると,その呼び出し元ルーチンに実行制御が戻ったときに実行されるソース行が,白抜きの現在位置ポインタによって示されます。ソース言語やコーディング方法により,呼び出し文を含んでいる行が示されたり,それ以降の行が示されることもあります。
10.6.3 変数やその他のシンボルの検索方法
シンボルがあいまいになるのは,シンボル(たとえば,変数名 X)を 2 つ以上のルーチンに定義するとき,つまりその他のプログラム・ユニットに定義するときです。
ほとんどの場合,シンボルのあいまいさは自動的に解消されます。まず,現在設定されている言語の有効範囲と可視性の規則が使用されます。また,デバッガではブレークポイントを設定するためなどに任意のモジュール内にシンボルを指定できるので,呼び出しスタック上のルーチン呼び出しの順序によってシンボルのあいまいさが解消されます。
しかし,複数回定義されたシンボルを指定すると,次のような処置がとられることがあります。
これらの問題を解決するためには,目的のシンボル宣言の検索範囲を指定しなければなりません。
DBG> EXAMINE SWAP\X |
レジスタ・ビューには,すべての機械語レジスタの現在の内容が表示されます(図 10-20 を参照)。
レジスタ・ビューを表示するには,メイン・ウィンドウまたはオプション・ビュー・ウィンドウの「Options」メニューで「Views...」を選択し,「Views」ダイアログ・ボックスが表示されたら,「Registers」をクリックします。
省略時の設定では,レジスタ・ビューには現在実行が一時停止しているルーチンに対応するレジスタ値が自動的に表示されます。プログラムからデバッガに制御が戻ると,プログラムの実行で変更されたすべての値が強調表示されます。
呼び出しスタック内の任意のルーチンに対応するレジスタ値を表示するには,メイン・ウィンドウの「Call Stack」メニューでその名前を選択します(第 10.6.2 項 を参照)。
レジスタに格納されている値を変更するには,次の手順に従ってください。
レジスタ値の表示に使用する基数は,次の方法で変更できます。
命令ビューには,ユーザ・プログラムのデコード済み命令ストリーム,つまり実際に実行されているコード(図 10-21 を参照)が表示されます。命令ビューが役立つのは,コンパイラによって最適化されたプログラムのデバッグ中は,メイン・ウィンドウの情報が実行中のコードと正確に対応していない場合です(第 1.2 節 を参照)。
命令ビューを表示するには,メイン・ウィンドウまたはオプション・ビュー・ウィンドウの「Options」メニューで「Views...」を選択し,「Views」ダイアログ・ボックスが表示されたら,「Instructions」をクリックします。
省略時の設定では,命令ビューには現在実行が一時停止しているルーチンのデコード済み命令ストリームが自動的に表示されます。命令の左にある現在位置ポインタは,次の実行命令を示します。
省略時の設定では,命令に対応するソース・コードの行番号が命令の左に表示されます。行番号を表示するか表示しないか指定するには,命令ビューの「File」メニューで「Display Line Numbers」を選択します。
省略時の設定では,命令の左にメモリ・アドレスが表示されます。アドレスを表示するか表示しないか指定するには,命令ビューの「File」メニューで「Show Instruction Addresses」を選択します。
命令ビューでの操作が終了したら,「Call Stack」メニューをクリックして,実行の停止箇所を再表示できます。
呼び出しスタック内のルーチンの命令ストリームを表示するには,メイン・ウィンドウの「Call Stack」メニューでそのルーチンの名前を選択します(第 10.6.2 項 を参照)。
図 10-21 命令ビュー
タスキング・プログラムは 1 つのプロセス内に複数の実行スレッドを持っており,次のプログラムを含んでいます。
デバッガで使用する タスク という用語はこのような制御の流れを示すものであり,言語や実現方法とは関係ありません。デバッガのタスキング・サポートは,このようなプログラムすべてに適用されます。
デバッガを使用すれば,タスクの情報を表示したり,タスクの実行,優先順位,状態の遷移などを制御するタスク特性を変更したりできます。
次の各節ではデバッガの Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースのタスキング機能を要約します。デバッガのタスキング・サポートについての詳しい説明は, 第 17 章 を参照してください。
10.9.1 タスク情報の表示
プログラムのタスク情報を表示するには,メイン・ウィンドウまたはオプション・ビュー・ウィンドウの「Options」メニューで「Views...」を選択し,「Views」ダイアログ・ボックスが表示されたら,「Tasking」をクリックします。
このタスキング・ビューには,ユーザ・プログラム内に現在存在している(終了していない)すべてのタスクの情報が表示されます。プログラムからデバッガに制御が戻ると,タスク情報が更新されます(図 10-22 を参照)。
図 10-22 タスキング・ビュー
次の各情報が表示されます。
デバッグ中にタスクの特性やタスキング環境を変更するには,「Task」メニューで次のいずれかの項目を選択します。
「Tasks」メニューの項目 | 機能 |
---|---|
Abort | 選択されたタスクを次に終了可能なときに終了するように要求する。実際にどのように実行されるかは,現在のイベント・ファシリティにより異なる(言語固有)。 Adaのタスクの場合,強制終了文の実行と同じである。 |
Activate | 選択されたタスクをアクティブ・タスクにする。 |
Hold | 選択されたタスクを保留にする。 |
Nohold | 選択されたタスクの保留を解除する。 |
Make Visible | 選択されたタスクを可視タスクにする。 |
All | サブメニューを使用してすべてのタスクを強制終了したり,すべてのタスクの保留を解除する。 |
10.10 デバッガの Compaq DECwindows Motif for OpenVMS インタフェースのカスタマイズ
デバッガは,省略時のデバッガ・リソース・ファイル(DECW$SYSTEM_DEFAULTS:VMSDEBUG.DAT)と一緒にシステムにインストールされます。このリソース・ファイルでは,次のようなカスタマイズ可能なパラメータで,省略時の起動設定を定義します。
説明用のコメントを入れた,システムの省略時デバッガ・リソース・ファイルは, 例 10-1 に掲載されています。これらの表示属性のうち,最初の 3 つの事項については, 第 10.10.1 項 , 第 10.10.2 項 ,および 第 10.10.3 項 で説明する方法で Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースにより会話形式で制御できます。どの場合も,「Options」メニューで「Save Options」を選択することにより,変更した表示構成を保存し,これ以降のデバッグ・セッションで適用することができます。
また, 第 10.10.4 項 の説明に従って,デバッガ・リソース・ファイルを編集し保存することにより,デバッガの表示構成についてのすべての属性を変更することができます。「Options」メニューから「Save Options」を選択するとき,またはローカル・デバッガ・リソース・ファイルの編集と保存を行うとき,デバッガは新しいバージョンのローカル・デバッガ・リソース・ファイル DECW$USER_DEFAULTS:VMSDEBUG.DAT を作成します。このファイルには,表示構成属性の定義が含まれています。次にデバッガを起動するとき,もっとも新しいローカル・リソース・ファイルで定義されている属性が使用され,それによって出力表示が構成されます。DCL コマンドの DELETE, RENAME,COPY を適切に使用することにより,デバッガの以前の表示構成に戻すことができます。
システムの省略時表示構成に戻すときは,OpenVMSデバッガの「Options」メニューから「Restore Default Options」を選択します。
10.10.1 デバッガ・ビューの起動時構成の定義
デバッガのビューの起動時構成を定義するには,次の手順に従ってください。
次にデバッガを起動すると,新しい表示構成を作成するときに最新のリソース・ファイルが使用されるようになります。
リソース・ファイル内にあるこれらのビューの定義を編集することによって(第 10.10.4 項 を参照),起動時の表示構成を定義することもできます。
10.10.2 ソース・ビューと命令ビュー内の行番号の表示と非表示
デバッガの起動時,省略時の設定により,ソース・ビューと命令ビューにはソース行番号が表示されます。デバッガの起動時に行番号を表示しないようにするには,次の手順に従ってください。
次にデバッガを起動すると,最新のリソース・ファイルが使用されて,新しい表示構成が作成されます。
リソース・ファイル内の次のリソースを「True」か「False」に設定することによって( 第 10.10.4 項 を参照),起動時に行番号を表示するかどうかの省略時設定を決めることもできます。
DebugSource.StartupShowSourceLineno: True DebugInstruction.StartupShowInstLineno: True |
10.10.3 プッシュ・ボタンの変更,追加,削除,並べ替え
プッシュ・ボタン・ビューのボタンはデバッガ・コマンドと対応しています。ユーザは次の操作ができます。
「Stop」ボタンの変更,削除はできません。 |
これ以降のデバッガ・セッションで使用できるようにこれらの変更を保存するには,「Options」メニューで「Save Options」を選択します。
第 10.10.3.1 項 , 第 10.10.3.2 項 ,および 第 10.10.3.3 項 では, Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースを使用して会話形式でプッシュ・ボタンをカスタマイズする方法について説明します。プッシュ・ボタンをカスタマイズするには,リソース・ファイルを編集する方法もあります。リソース・ファイルのボタン定義は,次のスクリプトで始まります。
DebugControl.Button |
(例 10-1 を参照。)
前へ | 次へ | 目次 | 索引 |