Compaq OpenVMS
デバッガ説明書


前へ 次へ 目次 索引


SELECT コマンドに特定の修飾子を指定し,ディスプレイ名を指定しなかった場合は,通常,その属性の割り当てが解除されます(その属性を持っていたディスプレイが選択解除されます)。その場合の正確な結果は,上記の表で説明したとおり属性によって異なります。

7.4 定義済みディスプレイ

デバッガは次の定義済みディスプレイを備えており,これらは各種のデータを取り込んで表示するために使用できます。

SRC(定義済みソース・ディスプレイ)
OUT(定義済み出力ディスプレイ)
PROMPT(定義済みプロンプト・ディスプレイ)
INST(定義済み機械語命令ディスプレイ)
REG(定義済みレジスタ・ディスプレイ)
FREG(定義済み浮動小数点レジスタ・ディスプレイ(Alpha のみ))
IREG(定義済み整数レジスタ・ディスプレイ)

画面モードに入ると,デバッガは 図 7-1 に示したように SRC を画面の上半分に,PROMPT を画面下部の 6 分の 1 に,そして OUT を SRC と PROMPT の間に配置します。省略時の設定では,INST,REG,FREG(Alpha のみ)および IREG のディスプレイは初期の画面から除去されています。

ディスプレイとウィンドウを並べ替えたあとに,この省略時の構成を再作成するには,キーパッドの BLUE MINUS を押します(PF4 のあとで MINUS(--)キーを押します)。

定義済みディスプレイの基本的な機能は次の各項で説明します。ユーザはこれらのディスプレイのバッファ・サイズやディスプレイ属性など,特定の特性を変更することができます。また,定義済みディスプレイに似た追加のディスプレイを作成することもできます。

ディスプレイの特性に関する要約情報を表示するには,SHOW DISPLAYコマンドを使用します。

表 7-1 は,定義済みディスプレイに関する重要な情報をまとめています。

表 7-1 定義済みディスプレイ
ディスプレイ名 ディスプレイ対象 有効なディスプレイ属性 起動時に表示されるかどうか
SRC ソース スクロール
ソース(省略時の設定)
X
OUT 出力 エラー
入力
出力(省略時の設定)
スクロール
X
PROMPT 出力 エラー(省略時の設定)
出力
プログラム(省略時の設定)
プロンプト(省略時の設定)
スクロール1
X
INST 命令 命令
スクロール
 
REG レジスタ スクロール  
FREG(Alpha のみ) レジスタ スクロール  
IREG レジスタ スクロール  


+VAX 専用
++Alpha 専用
1定義済み PROMPT ディスプレイはスクロールできない。

7.4.1 定義済みソース・ディスプレイ(SRC)

注意

デバッグ・セッション中にソース・コードをディスプレイに使用する方法についての詳しい説明は,第 6 章 を参照してください。

定義済みディスプレイの SRC(図 7-1 を参照)は,自動的に更新されるソース・ディスプレイです。

SRC は,ソース・コードを次の 2 つの基本的な方法で表示するために使用できます。

ソース・コードが表示されているモジュールの名前はディスプレイ名 SRC の右側に示されます。ソース・コードの左側に表示される番号は,コンパイラ生成リスト・ファイルに現れるコンパイラ生成行番号です。

デバッガの制御下でプログラムを実行すると,実行が一時停止するたびにSRCが自動的に更新されます。左端の欄の矢印は,次に実行されるソース行を指しています。正確に言えば,実行はそのソース行に対応する最初の命令の位置で一時停止しています。したがって,矢印が指している行は現在のプログラム・カウンタ(PC)の値に対応します。PCは,次に実行する命令のメモリ・アドレスが入っているレジスタです。

実行が一時停止しているルーチンのソース・コードを検索できない場合,たとえば,そのルーチンが実行時ライブラリ・ルーチンである場合などは,デバッガは呼び出しスタック上で次に下にあるルーチン(ソース・コードが取得できるもの)のソース・コードを表示しようとします。そのようなルーチンのソース・コードを表示する場合,デバッガは次のメッセージを発行します。


%DEBUG-I-SOURCESCOPE, Source lines not available for .0\%PC. 
        Displaying source in a caller of the current routine.

図 7-2 はこの機能を示しています。ソース・ディスプレイには,ルーチンTYPEの呼び出しが現在アクティブであることが示されています。TYPEは Fortran 実行時ライブラリ・プロシージャの1つに対応します。このルーチンのソース・コードは取得できないので,デバッガは呼び出し元ルーチンのソース・コードを表示します。出力ディスプレイに示されているSHOW CALLSコマンドの出力は,実行が一時停止しているルーチンとそのルーチンに通じる呼び出しシーケンスを示しています。

このような場合,ソース・ウィンドウの矢印はそのルーチン呼び出し後に実行が戻ってくる行を示します。この行は,ソース言語とコーディング・スタイルに応じて,その呼び出し文を含んでいる行であったり,その次の行であったりします。

図 7-2 ソース・コードが取得できない場合の画面モード・ソースの表示


プログラムがコンパイル時に最適化された場合は,SRCに表示されるソース・コードが実際に実行されているコードを表さないこともあります。そのような場合には,定義済み機械語命令ディスプレイのINSTが役立ちます。このディスプレイは実行されている命令を正確に示します。(第 7.4.4 項 を参照。)

ディスプレイSRCを自動的に更新する組み込みコマンドは EXAMINE/SOURCE .%SOURCE_SCOPE\%PC です。EXAMINE/SOURCEコマンドについての詳しい説明は 第 6.4 節 を参照してください。組み込みデバッガ・シンボル%SOURCE_SCOPEは1つの有効範囲を表し,次の特性を持っています。

7.4.1.1 任意のプログラム記憶位置でのソース・コードの表示

プログラム全体を通じて,ソース・コードがディスプレイに使用できる場合はソース・コードを表示するためにディスプレイSRCを使用できます。

ディスプレイSRCの内容の操作後,KP5を押せば現在実行が一時停止している記憶位置を再表示できます(SRCの省略時の動作)。

7.4.1.2 呼び出しスタック上にあるルーチンのソース・コードの表示

SET SCOPE/CURRENTコマンドを使用すると,現在呼び出しスタック上にあるルーチンのソース・コードを表示できます。たとえば次のコマンドは,現在実行が一時停止しているルーチンの呼び出し元のソース・コードが表示されるようにディスプレイSRCを更新します。


DBG> SET SCOPE/CURRENT 1

ソース・コードを表示するための省略時の有効範囲を再設定するには,CANCEL SCOPEコマンドを入力します。このコマンドは,実行が一時停止している呼び出しスタック最上部のルーチンのソース・コードがディスプレイSRCに表示されるようにします。

7.4.2 定義済み出力ディスプレイ(OUT)

図 7-1 および 図 7-2 は,定義済みディスプレイOUTの代表的なデバッガ出力を示しています。

ディスプレイOUTは汎用の出力ディスプレイです。省略時の設定ではOUTはoutput属性を持っているので,ソース・ディスプレイSRCや機械語命令ディスプレイINSTには出力されないデバッガ出力を表示します。たとえば,ディスプレイINSTを更新するはずの出力は,ディスプレイINSTが表示されていないかinstruction属性を持っていなければディスプレイOUTの中に表示されます。

省略時の設定では,OUTはデバッガの診断メッセージを表示せず,それらは PROMPTディスプレイに表示されます。ユーザはOUTに属性を割り当てることによって,通常の出力だけでなくデバッガの入力と診断もOUTに取り込まれるようにすることができます(第 7.3 節 を参照)。

省略時の設定では,定義済みディスプレイ OUT に割り当てられるメモリ・バッファは 100 行です。

7.4.3 定義済みプロンプト・ディスプレイ(PROMPT)

定義済みディスプレイ PROMPT は,デバッガが入力を求めるプロンプトを出すディスプレイです。図 7-1 および 図 7-2 では,PROMPT がその省略時の位置,つまり画面の下部の 6 分の 1 に示されています。

省略時の設定では,PROMPT はプロンプト属性を持ちます。さらに,PROMPT には(省略時の設定により)プログラム属性とエラー属性があり,プログラムからの出力と診断メッセージはそのディスプレイに出力されます。

PROMPT には,次に示すように他のディスプレイと異なる特性と制限事項があります。これは PROMPT ディスプレイを操作する際に混乱が起きないようにするためです。

PROMPT によって隠されるようなディスプレイの移動または拡大をユーザが行おうとした場合,デバッガは警報を出します。

7.4.4 定義済み機械語命令ディスプレイ(INST)

注意

省略時の設定では,定義済み機械語命令ディスプレイ INST は画面に表示されず,命令属性も持ちません(第 7.4.4.1 項 および 第 7.4.4.2 項 を参照)。

ディスプレイ INST は自動的に更新される機械語命令ディスプレイです。そのディスプレイはユーザ・プログラムのデコード済み命令ストリームを表示します。これは実行されている正確なコードであり,コンパイラの最適化の効果も含まれています。

VAXの例を 図 7-3 に示します。

このディスプレイは最適化されたコードのデバッグに便利です。最適化されたコードの場合,実行されているコードがソース・ディスプレイに表示されているコードと一致しないこともあります。最適化の効果についての詳しい説明は 第 14.1 節 を参照してください。

INST は,次の 2 つの基本的な方法で使用できます。

命令が表示されているルーチンの名前は,ディスプレイ名「INST」の右側に表示されます。命令の左側に表示される番号はコンパイラ生成ソース行番号です。

デバッガの制御下でプログラムを実行している場合は,実行が一時停止するたびに自動的に INST が更新されます。左端の欄の矢印は実行が一時停止している位置の命令を指します。これは次に実行される予定の命令であり,この命令のアドレスが現在の PC 値です。

図 7-3 画面モード機械語命令ディスプレイ(VAX システムの例)


ディスプレイ INST を自動的に更新する組み込みコマンドは EXAMINE/INSTRUCTION .%INST_SCOPE\%PC です。EXAMINE/INSTRUCTION コマンドについての詳しい説明は,第 4.3.1 項 を参照してください。組み込みデバッガ・シンボル %INST_SCOPE は有効範囲を表し,次の特性を持っています。

7.4.4.1 機械語命令ディスプレイの表示

省略時の設定では,ディスプレイ INST はディスプレイ・ペーストボードから除去されたものとしてマークされ( 第 7.5.2 項 を参照),可視ではありません。ディスプレイ INST を表示するには,次のいずれかの方法を使用します。

7.4.4.2 任意のプログラム記憶位置にある命令の表示

INST は,プログラム全体を通してデコード済み命令を表示するために使用することができます。

ディスプレイ INST の内容の操作後,KP5 を押せば現在実行が一時停止している記憶位置を再表示(INST の省略時の動作)できます。


前へ 次へ 目次 索引