[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]

7 画面モード

画面モードは,OpenVMSデバッガのコマンド・ライン・インタフェースの拡張機能であり, このモードでは,DECwindows Motifインタフェースの場合と同じ方法で( 第III部を参照),デバッグ・セッションに関する個別のデータ・ グループを同時に表示できます。たとえば, 画面の一部分にソース・コードを表示し,別の部分にレジスタの内容を表示し, さらに別の部分にデバッガからの出力を表示できます。

画面モードを起動するには,キーパッドのPF3を押します(またはSET MODE SCREENコマンドを入力します)。コマンド・ライン・インタフェースによるデバッグに戻るには,PF1 PF3 を押します(またはSET MODE NOSCREENコマンドを入力します)。


注意
デバッガに対するDECWindows Motifインタフェースの内部から画面モードを開始することはできません。

画面モード出力は,VT52以上のVTシリーズ端末,およびVWSを使用しているワークステーションの場合に最適です。 特に,ワークステーションの画面が大きいほど, 多数の画面をさまざまな目的に使用するのに適しています。

本章には次の内容が含まれています。

画面モード・コマンドの多くはキーパッド・キーにバインドされています。 キー定義については,付録 Aを参照してください。


注意
本章では,1つまたは複数のプロセスで実行されるプログラムに共通した情報を提供します。 その他のマルチプロセス・プログラム固有の情報については,第15章を参照してください。

7.1 概念と用語

ディスプレイとはテキスト行のまとまりのことです。テキストには, ソース・ファイルに入っている行,アセンブリ言語の命令,レジスタに入っている値, ユーザからデバッガへの入力,デバッガ出力,またはプログラム入出力(I/O) などがあります。

ディスプレイはディスプレイ・ウィンドウを通して参照します。 ウィンドウは画面の任意の長方形の領域を占有できます。ディスプレイ・ ウィンドウはディスプレイそのものより小さいのが普通なので,ディスプレイ・ テキストを越えてウィンドウを上下左右にスクロールさせ,ディスプレイの任意の部分を参照することができます。

図 7-1は,3つのディスプレイ・ ウィンドウのある画面モードの例です。 各ディスプレイの名前(SRC, OUT,およびPROMPT) は,それぞれのウィンドウの左上隅にあります。これらはディスプレイ自体のタグとして機能するだけでなく, あとでコマンドで参照するための名前としても機能します。

図 7-1 省略時の画面モード・ディスプレイ構成

図 7-1は,画面モードを最初に起動したときに設定される省略時のディスプレイ構成です。SRC, OUT ,およびPROMPT は,画面モードに入ったときに省略時の設定としてデバッガが提供する3 つの定義済みディスプレイ( 第7.4 節を参照)です。追加のディスプレイを作成するのと同様にこれらのディスプレイの構成を変更することができます。

SRC, OUT,およびPROMPTの各ディスプレイには次の基本的な特性があります。

概念上では,ディスプレイはペーストボード上の場合と同じように画面上に配置されます。 あるコマンドによって参照された最新のディスプレイは, 省略時の設定ではペーストボードの最上部に置かれます。 したがって,ウィンドウの記憶位置によって,最後に参照したディスプレイが他のディスプレイに重なるか他のディスプレイを隠すかが決まります( ペーストボード上の場合と同じ)。

デバッガは,ディスプレイをペーストする順序であるディスプレイ・ リストを保持します。いくつかのキーパッド・キー定義は,現在ペーストボード上にあるディスプレイの間を循環するために, このディスプレイ・ リストを使用します。

ディスプレイはすべて何らかのディスプレイ対象に所属します( 第7.2節を参照)。ディスプレイがどのような種類の情報( たとえば,ソース・コード,アセンブリ言語命令, 各種のデバッガ出力など)を取り込んで表示できるかは,このディスプレイ対象によって決まります。 またディスプレイ対象によって,ディスプレイの内容が生成される方法も決まります。

ディスプレイの内容は2つの方法で生成されます。

ディスプレイへ割り当てた属性の名前は,ディスプレイ名の右側に小文字で表示されます。 たとえば図 7-1では, SRCはsource属性とscroll属性を持ち(SRCは現在のソースのディスプレイ であり現在のスクロール・ディスプレイである) ,OUTはoutput属性を持っています。これは現在の出力ディスプレイ です。SRCはその独自の組み込みコマンドによって自動的に更新されますが,source 属性を持っているので,ある種の会話型コマンド( たとえば,EXAMINE/SOURCEなど)の出力も受け取ることに注意してください。

この節で紹介した概念については,この章の残りの部分でさらに詳しく説明します。

7.2 ディスプレイ対象

ディスプレイはすべてディスプレイ対象を持っています。このディスプレイ対象は, そのディスプレイに含まれる情報の種類とその情報が生成される方法を決めます。 またディスプレイに関連するメモリ・バッファがページングされるかどうかを決めます。

通常,ディスプレイ対象は新しいディスプレイを作成するためにDISPLAY コマンドを使用するときに指定します。ディスプレイ対象を指定しなかった場合は 出力ディスプレイが作成されます。DISPLAYコマンドは, 次のキーワードと一緒に使用して,既存のディスプレイのディスプレイ対象を変更するために使用することもできます。


DO (command[,...])
INSTRUCTION
INSTRUCTION (command)
OUTPUT
REGISTER
SOURCE
SOURCE (command)

レジスタ・ディスプレイの内容はデバッガによって自動的に生成および更新されます。 その他のディスプレイの対象の内容はコマンドによって生成され, それらのディスプレイ対象は2つの一般的なグループに分かれます。

次のディスプレイ対象のいずれかに属するディスプレイでは,ユーザがそのディスプレイを定義したときに与えたコマンドまたはコマンド・ リストに従って内容が自動的に更新されます。


DO (command[,...])
INSTRUCTION (command)
REGISTER
SOURCE (command)

指定したコマンド・リストは,そのディスプレイが除去済みとしてマークされていないかぎり, デバッガがユーザのプログラムから制御を受け取るたびに実行されます。 それらのコマンドの出力がディスプレイの新しい内容になります。 ディスプレイが除去済みとしてマークされている場合,デバッガはユーザがそのディスプレイを可視にする( そのディスプレイを非除去済みとしてマークする) まで,そのコマンドを実行しません。

次のディスプレイ対象のいずれかに属するディスプレイでは,ユーザが会話形式で入力したコマンドから内容が作成されます。


INSTRUCTION
OUTPUT
SOURCE

デバッガの出力をこのグループの特定のディスプレイへ出力するには,まずSELECT コマンドでそのディスプレイを選択しなければなりません。その方法については次の各項と, 第7.3節で説明します。 特定の出力のディスプレイを選択したあとは,ユーザのコマンドからの出力がそのディスプレイの内容になります。

7.2.1 DO (コマンド[; . . . ]) ディスプレイ対象

DOディスプレイは自動的に更新されるディスプレイです。コマンド・リスト内のコマンドは, デバッガがユーザのプログラムから制御を受け取るたびに, リストされた順に実行されます。それらのコマンドの出力がディスプレイの内容になり, 前の内容は消去されます。

たとえば,次のコマンドはDOディスプレイのCALLSをウィンドウQ3に作成します。 デバッガがプログラムから制御を受け取るたびにSHOW CALLSコマンドが実行され, その出力がCALLSに表示され,前の内容は消去されます。

     DBG> DISPLAY CALLS AT Q3 DO (SHOW CALLS)

次のコマンドは,ベクタ・レジスタV2の要素4〜7の内容をFORTRAN配列の構文を使用して表示するV2_DISP という名前のDOディスプレイを作成します。 このディスプレイはデバッガが制御を受け取るたびに自動的に更新されます。

     DBG> DISPLAY V2_DISP AT RQ2 DO (EXAMINE %V2(4:7))

DOディスプレイに割り当てられるメモリ・バッファの省略時のサイズは64 行です。メモリ・バッファが満杯になると,最も古い行が破棄され,次のテキストを表示するための空間が確保されます。 バッファ・サイズを変更するには,DISPLAY/SIZE コマンドを使用します。

7.2.2 INSTRUCTIONディスプレイ対象

機械語命令ディスプレイは,ルーチンの命令ストリーム内にあるEXAMINE /INSTRUCTIONコマンドの出力を表示します。表示される命令はデバッグされているイメージからデコードされたものであり, 実行されているコードを正確に示しているので, この種のディスプレイは最適化されたコードをデバッグするのに特に役立ちます( 第14.1 節を参照)。

このディスプレイでは1行が命令1つに相当します。命令に対応するソース行番号は左側の欄に表示されます。 検査中の記憶位置にある命令はディスプレイの中央に置かれ, 左側の欄の矢印によってマークされます。

機械語命令ディスプレイへ書き込みを行うには,前もってSELECT /INSTRUCTIONコマンドでそのディスプレイを現在の機械語命令ディスプレイ として選択しておかなければなりません。

次の例では,DISPLAYコマンドで機械語命令ディスプレイINST2をRH1に作成します。 その後,SELECT/INSTRUCTIONコマンドでINST2を現在の機械語命令ディスプレイとして選択します。EXAMINE/INSTRUCTION X コマンドを実行した時点で, ウィンドウRH1にはXで表した記憶位置の前後にある命令ストリームが表示されます。 記憶位置Xはディスプレイの中央に置かれ, 矢印がその位置の命令を指します。

     DBG> DISPLAY INST2 AT RH1 INSTRUCTION
     DBG> SELECT/INSTRUCTION INST2
     DBG> EXAMINE/INSTRUCTION X

これ以後,EXAMINE/INSTRUCTIONコマンドを実行するたびにディスプレイが更新されます。

命令ディスプレイに割り当てられるメモリ・バッファの省略時のサイズは64 行です。しかし,前後にスクロールすれば,ルーチン内のすべての命令を表示できます。 バッファ・サイズを変更して性能を向上するには, DISPLAY/SIZEコマンドを使用します。

7.2.3 INSTRUCTION(コマンド) ディスプレイ対象

これは,指定したコマンドの出力によって自動的に更新される機械語命令ディスプレイです。 そのコマンド(EXAMINE/INSTRUCTIONコマンドでなければならない) は,デバッガがユーザ・プログラムから制御を受け取るたびに実行されます。

たとえば,次のコマンドは機械語命令ディスプレイINST3をウィンドウRS45 に作成します。デバッガが制御を受け取るたびに,組み込みコマンドEXAMINE/INSTRUCTION .%INST_SCOPE\%PC が実行され,ディスプレイが更新されます。

     DBG> DISPLAY INST3 AT RS45 INSTRUCT (EX/INST .%INST_SCOPE\%PC)

このコマンドは,定義済みディスプレイINSTに似た機能を持つディスプレイを作成します。 組み込みEXAMINE/INSTRUCTIONコマンドは現在の有効範囲内で現在のPC 値にある命令を表示します(第7.4.4項を参照)。

自動的に更新される機械語命令ディスプレイを現在の機械語命令ディスプレイとして選択してある場合, そのディスプレイはその組み込みコマンドによって更新されるほかに, 会話形式のEXAMINE/INSTRUCTIONコマンドによって単純な機械語命令ディスプレイのように更新されます。

命令ディスプレイに割り当てられるメモリ・バッファの省略時のサイズは64 行です。しかし,前後にスクロールすれば,ルーチン内のすべての命令を表示できます。 バッファ・サイズを変更して性能を向上するには, DISPLAY/SIZEコマンドを使用します。

7.2.4 OUTPUTディスプレイ対象

出力ディスプレイは別のディスプレイへ出力されないデバッガ出力を表示します。 新しい出力は前のディスプレイ内容に追加されます。

出力ディスプレイへ書き込みを行うには,前もってそのディスプレイをSELECT/OUTPUT コマンドで現在の出力ディスプレイとして選択しておくか,SELECT/ERROR コマンドで現在のエラー・ディスプレイ として選択しておくか,あるいはSELECT/INPUTコマンドで 現在の入力ディスプレイとして選択しておかなければなりません。 出力ディスプレイに対するSELECTコマンドの使用についての詳しい説明は, 第7.3節を参照してください。

次の例では,DISPLAYコマンドで出力ディスプレイOUT2をウィンドウT2に作成します( ディスプレイ対象OUTPUTは省略時のディスプレイ対象なので, この例では削除してもかまいません)。その後,SELECT/OUTPUTコマンドでOUT2 を現在の出力ディスプレイとして選択します。この2つのコマンドによって, 定義済みディスプレイOUTに似た機能を持つディスプレイが作成されます。

     DBG> DISPLAY OUT2 AT T2 OUTPUT
     DBG> SELECT/OUTPUT OUT2

その結果,OUT2は他のディスプレイへ出力されないデバッガ出力をすべて収集するようになります。 次に例を示します。

出力ディスプレイに割り当てられるメモリ・バッファの省略時のサイズは64 行です。メモリ・バッファが満杯になると,最も古い行が破棄され,次のテキストを表示するための空間が確保されます。 バッファ・サイズを変更するには,DISPLAY/SIZE コマンドを使用します。

7.2.5 レジスタ・ディスプレイ対象

レジスタ・ディスプレイは自動的に更新されるディスプレイであり,プロセッサ・ レジスタの現在の値が16進形式で表示され,また,表示できる数だけ呼び出しスタックの値も表示されます。

表示されるレジスタ値は,現在実行が中断されているルーチンの値です。 デバッガに制御が渡されると,必ず値が更新されます。変更された値は強調表示されます。

VAXプロセッサでは,定義済みディスプレイREG には,汎用レジスタR0〜R15とPSLの内容が16進形式で格納されますが,ベクタ・ レジスタは格納されません。ベクタ・レジスタまたはベクタ制御レジスタに格納されているデータを画面モードで表示するには,DO ディスプレイを使用します( 第7.2.1 項を参照)。

VAXプロセッサでは,定義済みディスプレイIREG には定義済みディスプレイREGと同じ情報が格納されますが,ディスプレイ・ ウィンドウの構成が異なります。IREGディスプレイがVAXで提供されるのは,VAX デバッグ・アプリケーションとAlphaデバッグ・アプリケーションの間でデバッガの.COM ファイルと.INIファイルを簡単に移植できるようにするためです。

Alphaプロセッサでは,定義済みディスプレイREG には,汎用レジスタR0〜R28,FP (R29),SP (R30),R31,PC,PS,浮動小数点レジスタF0 〜F31,FPCR,SFPCRが16進形式で格納され,また,表示できる数だけ呼び出しスタックの値も格納されます。

Alphaプロセッサでは,定義済みディスプレイIREG には,汎用レジスタR0〜R28,FP,およびウィンドウに表示できる数だけ, 呼び出しスタックの値が16進形式で格納されます。

Alphaプロセッサでは,定義済みディスプレイFREG には,浮動小数点レジスタF0〜F31,FPCR,SFPCRが浮動小数点形式で格納され, また,ウィンドウに表示できる数だけ,呼び出しスタックの値が16 進形式で格納されます。

レジスタ・ディスプレイに割り当てられるメモリ・バッファの省略時のサイズは64 行です。メモリ・バッファが満杯になると,最も古い行が破棄され, 新しいテキストを格納するための空間が確保されます。バッファ・サイズを変更するには,DISPLAY/SIZE コマンドを使用します。

7.2.6 SOURCEディスプレイ対象

ソース・ディスプレイは,あるモジュールのソース・コードが取得できる場合に, そのソース・コード内のTYPEコマンドまたはEXAMINE/SOURCEコマンドの出力を表示します。 ソース行番号は左側の欄に表示されます。コマンドの出力であるソース行はディスプレイの中央に置かれ, 左側の欄の矢印によって示されます。TYPE コマンドで行の範囲を指定した場合は,それらの行がディスプレイの中央に置かれますが, 矢印は表示されません。

ソース・ディスプレイへ書き込みを行うには,前もってSELECT/SOURCEコマンドでそのディスプレイを現在のソース・ ディスプレイとして選択しておかなければなりません。

次の例では,DISPLAYコマンドでソース・ディスプレイSRC2をQ2に作成します。 その後,SELECT/SOURCEコマンドでSRC2を現在のソース・ディスプレイとして選択します。TYPE 34 コマンドを実行した時点で,ウィンドウRH1 にはデバッグ中のモジュールの行34の前後にあるソース・コードが表示されます。 矢印はディスプレイの中央に置かれた行34を指します。

     DBG> DISPLAY SRC2 AT Q2 SOURCE
     DBG> SELECT/SOURCE SRC2
     DBG> TYPE 34

これ以後,TYPEコマンドまたはEXAMINE/SOURCEコマンドを実行するたびにディスプレイが更新されます。

ソース・ディスプレイのメモリ・バッファの省略時のサイズは64行です。 ソース・ディスプレイのメモリ・バッファはページングされるため,ソース・ モジュール全体またはルーチン全体で前後にスクロールできます。バッファ・ サイズを変更して性能を向上するには,DISPLAY/SIZEコマンドを使用します。

7.2.7 SOURCE (コマンド)ディスプレイ対象

これは,指定したコマンドの出力によって自動的に更新されるソース・ディスプレイです。 そのコマンド(EXAMINE/SOURCEコマンドまたはTYPEコマンドでなければならない) は,デバッガがユーザ・プログラムから制御を受け取るたびに実行されます。

たとえば,次のコマンドはソース・ディスプレイSRC3をウィンドウRS45 に作成します。デバッガが制御を受け取るたびに,組み込みコマンドEXAMINE/SOURCE .%SOURCE_SCOPE\%PC が実行され,ディスプレイが更新されます。

     DBG> DISPLAY SRC3 AT RS45 SOURCE (EX/SOURCE .%SOURCE_SCOPE\%PC)

このコマンドは定義済みディスプレイSRCに似た機能を持つディスプレイを作成します。 組み込みEXAMINE/SOURCEコマンドは現在の有効範囲内で現在のPC 値に対するソース行を表示します(第7.4.1項を参照)。

自動的に更新されるソース・ディスプレイを現在のソース・ディスプレイとして選択してある場合, そのディスプレイはその組み込みコマンドによって更新されるほかに, 会話形式のEXAMINE/SOURCEコマンドまたはTYPEコマンドによって単純なソース・ ディスプレイのように更新されます。

ソース・ディスプレイのメモリ・バッフアの省略時のサイズは64行です。 自動的に更新されるソース・ディスプレイのメモリ・バッファはページングされるため, ソース・モジュール全体またはルーチン全体で前後にスクロールできます。 バッファ・サイズを変更して性能を向上するには, DISPLAY/SIZEコマンドを使用します。

7.2.8 PROGRAMディスプレイ対象

プログラム・ディスプレイには,デバッグされるプログラムの出力が格納されます。 定義済みPROMPTディスプレイはプログラム・ディスプレイに属し, この種類で使用できる唯一のディスプレイです。プログラム・ディスプレイとして新しいディスプレイを作成することはできません。

混乱を避けるため,PROMPTディスプレイにはいくつかの制限事項があります( 第7.4.3項を参照)。

7.3 ディスプレイ属性の割り当て

画面モードでは,ユーザが会話形式で入力したコマンドの出力は,その出力の種類および各種のディスプレイへ割り当てたディスプレイ属性に応じて各種のディスプレイに出力されます。 たとえば,デバッガの診断メッセージはerror 属性を持つディスプレイ(現在のエラー・ディスプレイ)へ出力されます。 ディスプレイへ1つまたは複数の属性を割り当てることにより, 異なる種類の情報を混合したり分離したりできます。

属性には次の名前が付いています。


error
input
instruction
output
program
prompt
scroll
source

ディスプレイに属性を割り当てた場合,その属性の名前がウィンドウ最上部の境界上に小文字でディスプレイ名の右側に表示されます。scroll 属性はデバッガ出力に影響を及ぼすことはありませんが,SCROLL, MOVE, EXPANDの各コマンドの省略時のディスプレイを制御するために使用されます。

省略時の設定では,定義済みディスプレイに次のような属性が割り当てられます。

ディスプレイに属性を割り当てるには,属性と同じ名前の修飾子を指定したSEL ECT コマンドを使用します。次の例では,DISPLAYコマンドで出力ディスプレイZIP を作成します。その後,SELECT/OUTPUTコマンドでZIPを現在の出力ディスプレイ(output 属性を持つディスプレイ)として選択します。 後者のコマンドを実行した後,"output"という語は定義済み出力ディスプレイOUT の最上部境界から消え,ディスプレイZIP上に現れます。また, それ以前にOUTへ出力されていたすべてのデバッガ・ディスプレイがZIP へ出力されるようになります。

     DBG> DISPLAY ZIP OUTPUT
     DBG> SELECT/OUTPUT ZIP

特定の属性は,ある決まったディスプレイ対象にだけ割り当てることができます。 次のリストはSELECTコマンドの各修飾子とその効果,およびその属性を割り当てることができるディスプレイ対象を示したものです。

SELECT
修飾子
ディスプレイ
対象への適応
説明
/ERROR 出力プロンプト 指定した表示を現在のエラー・ディスプレイとして選択する。 これ以後のデバッガの診断メッセージは,すべてそのディスプレイへ出力される。 指定するディスプレイは出力ディスプレイかPROMPT ディスプレイでなければならない。ディスプレイを指定しなかった場合は,PROMPT ディスプレイが現在のエラー・ディスプレイとして選択される。
/INPUT 出力 指定したディスプレイを現在の入力ディスプレイとして選択する。 これ以後のデバッガ入力は,すべてそのディスプレイ内にエコーバックされる。 指定するディスプレイは出力ディスプレイでなければならない。 ディスプレイを指定しなかった場合は現在の入力ディスプレイが選択解除され, デバッガ入力はどのディスプレイにもエコーバックされなくなる。
/INSTRUCTION 命令 指定したディスプレイを現在の機械語命令ディスプレイとして選択する。 これ以後のEXAMINE/INSTRUCTIONコマンドの出力は, すべてそのディスプレイへ出力される。指定するディスプレイは機械語命令ディスプレイでなければならない。 キーパッド・キー・シーケンスPF4 COMMA は,ディスプレイ・リスト内の次の機械語命令ディスプレイを現在の機械語命令ディスプレイとして選択する。 ディスプレイを指定しなかった場合は現在の機械語命令ディスプレイが選択解除され, どのディスプレイもinstruction 属性を持たなくなる。
/OUTPUT 出力プロンプト 指定したディスプレイを現在の出力ディスプレイとして選択する。 これ以後のデバッガ出力は,すべてそのディスプレイへ出力される。 ただし,特定の種類の出力が別のディスプレイへ出力される場合( たとえば,現在のエラー・ディスプレイへ出力される診断メッセージなど) は除く。指定するディスプレイは出力ディスプレイかPROMPT ディスプレイでなければならない。キーパッド・キー・シーケンスPF1 KP3 は,ディスプレイ・リスト内の次の出力ディスプレイを現在の出力ディスプレイとして選択する。 ディスプレイを指定しなかった場合は,PRO MPT ディスプレイが現在の出力ディスプレイとして選択される。
/PROGRAM プロンプト 指定したディスプレイを現在のプログラム・ディスプレイとして選択する。 これ以後のプログラム入出力(I/O)は強制的にそのディスプレイで行われる。 現在,PROM PTディスプレイだけが指定できる。 ディスプレイを指定しなかった場合は現在のプログラム・ ディスプレイが選択解除され,プログラムの入出力がPROMPTディスプレイへ強制的に送られることはなくなる。
/PROMPT プロンプト 指定したディスプレイを現在のプロンプト・ ディスプレイとして選択し,デバッガはそのディスプレイ内に入力用のプロンプトを表示する。 現在,PROMPTディスプレイだけが指定できる。PROMPT ディスプレイを選択解除することはできない。
/SCROLL すべて 指定したディスプレイを現在のスクロール・ディスプレイとして選択する。 そのディスプレイは,それ以後のSCROLL, MOVE, EXPANDの各コマンド用の省略時のディスプレイになる。ユーザはどのディスプレイでも指定できる。 ただし,PROMPTディスプレイはスクロールしない。SELECT コマンドで修飾子を指定しなかった場合は,この/SCROLL 修飾子が省略時の設定になる。キーKP3は,ディスプレイ・リスト内で現在のスクロール・ ディスプレイの後ろにある次のスクロール・ディスプレイを現在のスクロール・ ディスプレイとして選択する。ディスプレイを指定しなかった場合は現在のスクロール・ ディスプレイが選択解除され, どのディスプレイもscroll属性を持たなくなる。
/SOURCE ソース 指定したディスプレイを現在のソース・ ディスプレイとして選択する。それ以後のすべてのTYPE コマンドまたはEXAMINE/SOURCEコマンドの出力は,そのディスプレイへ出力される。 指定するディスプレイはソース・ディスプレイでなければならない。 キーパッド・キー・シーケンスPF4 KP3は,ディスプレイ・ リスト内の次のソース・ディスプレイを現在のソース・ディスプレイとして選択する。 ディスプレイを指定しなかった場合は現在のソース・ディスプレイが選択解除され, どのディスプレイもsource属性を持たなくなる。

上記の表に示した制限事項に従って,ディスプレイはいくつかの属性を持つことができます。 前に述べた例では,ZIPは現在の出力ディスプレイとして選択されました。 次の例では,ZIPをさらに現在の入力ディスプレイ, エラー・ディスプレイ,およびスクロール・ディスプレイとして選択します。 これらのコマンドの実行後は,デバッガの入出力(I/O)と診断は発生した順に正しくZIP 内に記録され,ZIPが現在のスクロール・ディスプレイになります。

     DBG> SELECT/INPUT/ERROR/SCROLL ZIP

ディスプレイ属性のそれぞれに対して現在選択されているディスプレイを示すには,SHOW SELECT コマンドを使用します。

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 の省略時の動作)できます。

7.4.4.3 呼び出しスタック上にあるルーチンの命令の表示

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

     DBG> SET SCOPE/CURRENT 1

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

7.4.5 定義済みレジスタ・ ディスプレイ(REG ,IREG,FREG)

VAXプロセッサでは,定義済みディスプレイREG とIREGには,次の情報が格納されます。


R0〜R11
AP (R12)
FP (R13)
SP (R14)
PC (R15)
プロセッサ・ステータス・ロングワード(PSL)の条件コード・ビット(C ,V,Z,N)
ウィンドウに表示できる数の呼び出しスタックの値

REGディスプレイとIREGディスプレイには,ベクタ・レジスタは表示されません。 ベクタ・レジスタまたはベクタ制御レジスタのデータを画面モードで表示するには,DO ディスプレイを使用します(第7.2.1項を参照)。

定義済みREGディスプレイの例として図 7-4 を参照してください。

図 7-4 画面モード・レジスタ・ディスプレイ

Alphaプロセッサでは,定義済みディスプレイ表示REG には,次の情報が格納されます。


汎用レジスタR0〜R28
FP (R29)
SP (R30)
R31
PC
PS
浮動小数点レジスタF0〜F31
FPCR
SFPCR
ウィンドウに表示できる数の呼び出しスタックの値

Alphaプロセッサでは,定義済みディスプレイIREG には,16進形式で次の情報が格納されます。


汎用レジスタR0〜R28
FP (R29)
SP (R30)
R31
PC
PS
ウィンドウに表示できる数の呼び出しスタックの値

注意
VAXシステムでは,定義済みディスプレイIREG には,定義済みディスプレイREGと同じ情報が格納されます。

Alphaプロセッサでは,定義済みディスプレイFREG には,次の情報が格納されます。


浮動小数点レジスタF0〜F31,浮動小数点形式で表示
FPCR
SFPCR
ウィンドウに表示できる数の呼び出しスタックの値,16進形式で表示

表示されるレジスタ値は,現在実行が一時停止しているルーチンに関するものです。 これらの値はデバッガが制御を受け取るたびに更新されます。 変更された値は強調表示されます。

REG,IREG,FREG (Alphaのみ)は,最初はディスプレイ・ペーストボードから削除されるものとしてマークされているため, 表示されません。REG ディスプレイ,IREGディスプレイ,FREGディスプレイを表示するには, DISPLAYコマンドを使用しなければなりません。また,PF1 KP7を押してREG ディスプレイを表示することもできます。PF1 KP7を押すと,INSTディスプレイの横にREG を表示できます。

レジスタ・ウィンドウを大きくした場合,デバッガは残りのスペースをユーザの呼び出しスタックに入っている情報で埋めます。

7.4.5.1 呼び出しスタック上にあるルーチンのレジスタ値の表示

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

     DBG> SET SCOPE/CURRENT 1

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

7.5 既存のディスプレイの操作

この節では,次の機能の実行方法を説明します。

第7.7節および第7.2節でも既存のディスプレイをDISPLAYコマンドによって変更するための方法( ディスプレイ・ウィンドウおよび表示される情報の種類を変更する方法) を詳しく説明しています。

7.5.1 ディスプレイのスクロール

通常,ディスプレイはウィンドウを通して見ることができる以上の行数あるいは, ウィンドウより長い行のテキストを持っています。SCROLLコマンドを使用すると, ウィンドウの境界を越えて隠れているテキストを見ることができます。PROMPT ディスプレイを除くすべてのディスプレイでスクロールが可能です。

ディスプレイをスクロールさせる最も簡単な方法は,この節の後半で述べるようなキーパッド・ キーを使用した方法です。最初に関連コマンドの使用法を説明します。

SCROLLコマンドではディスプレイを明示的に指定できます。しかし,通常はまず現在のスクロール・ ディスプレイを選択するためにSELECT/SCROLL コマンドを使用します。この結果,そのディスプレイはscroll属性を持ち,SCROLL コマンドの省略時のディスプレイとなります。その後,そのディスプレイを指定した行数だけ上下に, あるいは指定した桁数だけ左右にスクロールさせるために,SCROLL コマンドをパラメータなしで使用します。 スクロールする方向と距離はコマンド修飾子(/UP:n, /RIGHT:nなど)で指定します。

次の例では,SELECTコマンドでディスプレイOUTを現在のスクロール・ディスプレイとして選択してから(/SCROLL は省略時の修飾子なので省略可能) ,SCROLLコマンドによって下18行のテキストが表示されるようにOUTをスクロールさせています。

     DBG> SELECT OUT
     DBG> SCROLL/DOWN:18

いくつかの便利なSELECTコマンド行とSCROLLコマンド行が次のようにキーパッド・ キーに割り当てられています。キーパッド図については,付録 A を参照してください。

7.5.2 ディスプレイの表示,非表示,除去,取り消し

DISPLAYコマンドは,ディスプレイを作成および操作するための最も用途の広いコマンドです。 このコマンドを最も単純な形式で使用した場合,既存のディスプレイの1 つがペーストボードの最上部に置かれ,そのディスプレイの現在のウィンドウを通して表示されます。 たとえば,次のコマンドはディスプレイINST をその現在のウィンドウを通して表示します。

     DBG> DISPLAY INST

DISPLAY %NEXTDISPコマンドにバインドされているKP9を押すと,同じことが簡単に行えます。 組み込み関数%NEXTDISPはディスプレイ・リスト内の次のディスプレイを表します。 付録 Bに, 画面に関連したすべての組み込み関数が示されています。KP9を押すたびに, リスト内の次のディスプレイがペーストボード最上部に置かれ,その現在のウィンドウ内に表示されます。

省略時の設定では,ディスプレイOUTの最上行(そのディスプレイを示す) はディスプレイSRCの最下行に一致します。SRCがペーストボード最上部にある場合, その最下行はOUTの最上行を隠します。各種のディスプレイをペーストボード最上部に置くためにDISPLAY コマンドとそれに対応するキーパッド・ キーを使用する場合は,このことに注意してください。

ペーストボードの最下部にあるディスプレイを表示しないためには, DISPLAY/HIDEコマンドを使用します。このコマンドはディスプレイ・リスト内でのそのディスプレイの順番を変更します。

ペーストボードからディスプレイを除去して見えなくするには(ただし, 永久に削除されるわけではない),DISPLAY/REMOVEコマンドを使用します。 除去したディスプレイをペーストボード上に戻すには,DISPLAYコマンドを使用します。

永久にディスプレイを削除するには,CANCEL DISPLAYコマンドを使用します。 ディスプレイを再作成するには,第7.6 節で説明するとおり,DISPLAYコマンドを使用します。

PROMPTディスプレイは表示しなかったり,除去したり,削除したりできないので注意してください。

現在存在しているディスプレイを見るには,SHOW DISPLAYコマンドを使用します。 ディスプレイはディスプレイ・リスト上の順序に従ってリストされます。 ペーストボードの最上部にあるディスプレイは最後にリストされます。

DISPLAYオプションについての詳しい説明は,オンライン・ヘルプのDISPLAY コマンドの説明を参照してください。また,DISPLAYコマンドでは既存のディスプレイのその他の特性( ディスプレイ・ウィンドウと表示される情報の種類) を変更できるオプション・パラメータが使用できることを覚えておいてください。 これらの方法については,第7.7節および第7.2 節を参照してください。

7.5.3 ディスプレイの画面内移動

画面内でディスプレイを移動するには,MOVEコマンドを使用します。修飾子/UP: n, /DOWN:n, /RIGHT:n,および/LEFT: nは,ディスプレイを移動する方向と行数または桁数を指定します。 ディスプレイを指定しなかった場合には現在のスクロール・ ディスプレイが移動します。

ディスプレイを移動する最も簡単な方法は,次のようなキーパッド・キーを使用した方法です。

7.5.4 ディスプレイの拡大または縮小

ディスプレイを拡大または縮小するにはEXPANDコマンドを使用します。修飾子/UP: n, /DOWN:n, /RIGHT:n,および/LEFT: nは,ディスプレイを拡大または縮小する方向と行数または桁数を指定します。 ディスプレイを縮小するには,これらの修飾子に負の整数値を指定します。 ディスプレイを指定しなかった場合には現在のスクロール・ ディスプレイが拡大または縮小されます。

ディスプレイを拡大または縮小する最も簡単な方法は,次のようなキーパッド・ キーを使用した方法です。

PROMPTディスプレイは水平方向には縮小,拡大できません。また,垂直方向の場合,2 行より少ない行数に縮小することはできません。

7.6 新しいディスプレイの作成

新しい画面ディスプレイを作成するには,DISPLAYコマンドを使用します。 基本的な構文は次のとおりです。

     DISPLAY display-name [AT window-spec] [display-kind]

ディスプレイ名は,すでに何かのディスプレイに付けてある名前以外であればどんな名前でもかまいません。 既存のすべてのディスプレイを表示するにはSHOW DISPLAY コマンドを使用します。新しいディスプレイを作成すると, そのディスプレイはペーストボードの最上部で,既存のディスプレイ( 非表示にはできない定義済みPROMPTディスプレイは除く)の最上部に置かれます。 ディスプレイ名はディスプレイ・ウィンドウの左上隅にディスプレイされます。

第7.7節では,ウィンドウを指定するためのオプションを説明します。 ウィンドウ指定を提供しなかった場合,そのディスプレイは画面の上半分または下半分に配置されます。 この位置は新しいディスプレイを作成するたびに交互に変わります。

第7.2節では,ディスプレイ対象を指定するためのオプションを説明します。 ディスプレイ対象を指定しなかった場合は出力ディスプレイが作成されます。

たとえば,次のコマンドはOUT2という名前の新しい出力ディスプレイを作成します。OUT2 に対応するウィンドウは画面の上半分または下半分となります。

     DBG> DISPLAY OUT2

次のコマンドはEXAM_XYという名前の新しいDOディスプレイを作成し,画面右の3 番目の4分の1(RQ3)に置きます。このディスプレイは変数Xと変数Y の現在の値を示し,デバッガがプログラムから制御を受け取るたびに更新されます。

     DBG> DISPLAY EXAM_XY AT RQ3 DO (EXAMINE X,Y)

詳しい説明については,DISPLAYコマンドの説明を参照してください。

7.7 ディスプレイ・ウィンドウの指定

ディスプレイ・ウィンドウは画面の任意の長方形部分を占めることができます。

ディスプレイ・ウィンドウは,DISPLAYコマンドでディスプレイを作成するときに指定できます。 また,DISPLAYコマンドで新しいウィンドウを指定することによって, ディスプレイに現在対応するウィンドウを変更することもできます。 ウィンドウを指定する場合,次のオプションがあります。

これらの各方法については次の各項で説明します。ウィンドウを指定する場合,PROMPT ディスプレイが常にディスプレイ・ペーストボードの最上部に残り, したがって同じ画面領域を共有する別のディスプレイは一部が隠されることに注意してください。

ディスプレイ・ウィンドウは,指定した方法に関係なく動的なものです。 したがって,SET TERMINALコマンドを使用して画面の高さまたは幅を変更した場合, ディスプレイに対応したウィンドウは新しい画面の高さまたは幅に比例して拡大または縮小されます。

7.7.1 行数と桁数によるウィンドウの指定

ウィンドウ指定の一般的な形式は,(start-line,line- count[,start-column,column- count])です。たとえば, 次のコマンドは出力ディスプレイCALLSを作成し,そのウィンドウは高さが7 行で10行目から始まり,幅が30桁で50桁目から始まることを指定します。

     DBG> DISPLAY CALLS AT (10,7,50,30)

start-columncolumn-countも指定しなかった場合, ウィンドウは画面いっぱいの幅になります。

7.7.2 定義済みウィンドウの使用

デバッガは多数の定義済みウィンドウを備えています。これらのウィンドウには, 行数と桁数を指定しなくてもDISPLAYコマンドで使用できる短いシンボリック名が付いています。 たとえば,次のコマンドは出力ディスプレイZIP を作成し,そのウィンドウをRH1 (画面の右上半分)とすることを指定します。

     DBG> DISPLAY ZIP AT RH1

SHOW WINDOWコマンドは,ユーザがSET WINDOWコマンドで作成したウィンドウ定義だけでなく, すべての定義済みウィンドウ定義も表示します。

7.7.3 新しいウィンドウ定義の作成

ほとんどの場合,定義済みウィンドウだけでも十分ですが,SET WINDOWコマンドで新しいウィンドウ定義を作成することもできます。 このコマンドは次の構文をとり, ウィンドウ名とウィンドウ指定とを対応づけます。

     SET WINDOW window-name AT (start-line,line-count[,
     start-column,column-count])

ウィンドウ定義の作成後は,DISPLAYコマンドの中に定義済みウィンドウと同様にその名前を使用するだけです。 次の例ではウィンドウ定義MIDDLE が設定されます。その後,この定義を使用してディスプレイOUTをウィンドウMIDDLE を通して表示します。

     DBG> SET WINDOW MIDDLE AT (9,4,30,20)
     DBG> DISPLAY OUT AT MIDDLE

現在のすべてのウィンドウ定義を表示するには,SHOW WINDOWコマンドを使用します。 ウィンドウ定義を削除するには,CANCEL WINDOWコマンドを使用します。

7.8 ディスプレイ構成のサンプル

画面モードの使用法は,ユーザ個人のニーズや見つけたいエラーの種類によって異なります。 定義済みのディスプレイを使用するだけで十分な場合もあります。 大きな画面へアクセスできるときには,追加の表示をさまざまな用途に作成したい場合があります。 次の例をそのような場合の参考にしてください。

高級言語でデバッグを行っているときに,複数のルーチン呼び出しを通してプログラムの実行をトレースしたいと想定します。

まず,省略時の画面構成,つまりH1にSRC,S45にOUT,S6にPROMPTを設定します。 キーパッド・キー・シーケンスPF4 MINUSでこの構成が得られます。SRC には実行が一時停止しているモジュールのソース・コードが表示されます。

次のコマンドは,有効範囲1でのPC値(実行が一時停止しているルーチンの呼び出しでの, 呼び出しスタックの1レベル下)を示すSRC2という名前のソース・ ディスプレイをRH1に作成します。

     DBG> DISPLAY SRC2 AT RH1 SOURCE (EXAMINE/SOURCE .1\%PC)

この結果,画面の左半分には現在実行中のルーチンが表示され,右半分にはそのルーチンを呼び出し元が表示されます。

次のコマンドは,デバッガがプログラムから制御を受け取るたびにSHOW CALLSコマンドを実行するCALLSという名前のDOディスプレイをS4に作成します。

     DBG> DISPLAY CALLS AT S4 DO (SHOW CALLS)

これによってOUTの上半分がCALLSで隠されるので,次のようにOUTのウィンドウを小さくします。

     DBG> DISPLAY OUT AT S5

同様なディスプレイ構成は,ソース・ディスプレイでなく機械語命令ディスプレイでも作成できます。

7.9 ディスプレイと画面状態の保存

SAVEコマンドを使用すると,既存のディスプレイのスナップショットを作成してそのコピーを新しいディスプレイとして保存することができます。 これは,たとえば自動的に更新されるディスプレイ(DOディスプレイなど) の現在の内容をあとで参照したい場合などに便利です。

次の例では,SAVEコマンドでディスプレイCALLSの現在の内容をディスプレイCALLS4 の中へ保存します。ディスプレイCALLS4は,このコマンドで作成されます。

     DBG> SAVE CALLS AS CALLS4

新しいディスプレイはペーストボードから除去されます。その内容を表示するにはDISPLAY コマンドを使用します。

     DBG> DISPLAY CALLS4

EXTRACTコマンドには2つの用途があります。1つはディスプレイの内容をテキスト・ ファイルに保存することです。たとえば,次のコマンドはディスプレイCALLS の内容を抽出し,そのテキストをファイルCOB34.TXTへ追加します。

     DBG> EXTRACT/APPEND CALLS COB34

もう1つの用途は,EXTRACT/SCREEN_LAYOUTコマンドを使用してコマンド・ プロシージャを作成し,それをあとのデバッグ・セッションで実行して前の画面状態を再作成することです。 次の例では,EXTRACT/SCREEN_LAYOUT コマンドで省略時の指定SYS$DISK:[]DBGSCREEN.COMを持つコマンド・プロシージャを作成します。 このファイルには,現在の画面の状態を再作成するために必要なすべてのコマンドが含まれています。

     DBG> EXTRACT/SCREEN_LAYOUT
        .
        .
        .
     DBG> @DBGSCREEN

PROMPTディスプレイは,他のディスプレイのように保存したりファイルの中へ抽出したりすることはできないので注意してください。

7.10 画面の高さと幅の変更

デバッグ・セッションの間,端末画面の高さまたは幅を変更することができます。80 桁を表示した場合には折り返されてしまうような長い行を画面に収めたい場合や, ワークステーションでデバッガ・ウィンドウを他のウィンドウとの関係で再編集したい場合などです。

画面の高さまたは幅を変更するには,SET TERMINALコマンドを使用します。 このコマンドの一般的な効果は,VTシリーズの端末の場合でもワークステーションの場合でも同じです。

この例では,画面サイズが80桁24行の省略時のVT100画面エミュレーション・ モードでワークステーション・ウィンドウを使用して,デバッガをすでに起動し, 画面モードで使用しているとします。この時点でより大きな画面を使用したい場合, 次のコマンドを使用すれば画面の高さとデバッガ・ ウィンドウの幅をそれぞれ35行と110桁に増やすことができます。

     DBG> SET TERMINAL/PAGE:35/WIDTH:110

省略時の設定では,すべてのディスプレイが動的になっています。動的なディスプレイでは,SET TERMINAL コマンドで画面の高さまたは幅を変更すると, ウィンドウの寸法が比例して調整されます。したがって,SET TERMINALコマンドを使用した場合は各ディスプレイの相対的な位置が保持されます。DISPLAY コマンドで/[NO]DYNAMIC修飾子を使用すると,ディスプレイを動的にするかしないかを制御できます。 動的でないディスプレイの場合,SET TERMINAL コマンドの入力後にウィンドウ座標が変更されません。 その後,ディスプレイを移動したりサイズ変更したりするためにDISPLAY, MOVE, EXPAND の各コマンドや各種のキーパッド・キーの組み合わせが使用できます。

デバッガで使用している現在の端末の幅と高さを表示するには,SHOW TERMINALコマンドを使用します。

デバッガのSET TERMINALコマンドは,DCLレベルの端末画面サイズには影響を及ぼさないので注意してください。 デバッガを終了した時点で,元の画面サイズに戻ります。

7.11 画面に関連した組み込みシンボル

次の組み込みシンボルは,言語式内でディスプレイと画面パラメータを指定する際に使用できます。

7.11.1 画面の高さと幅

組み込みシンボルの%PAGEと%WIDTHは,それぞれ端末画面の現在の高さと幅を戻します。 これらのシンボルはウィンドウ指定など,さまざまな式の中で使用できます。 たとえば,次のコマンドは画面の中央付近の領域を占めるMIDDLE という名前のウィンドウを定義します。

     DBG> SET WINDOW MIDDLE AT (%PAGE/4,%PAGE/2,%WIDTH/4,%WIDTH/2)

7.11.2 ディスプレイ組み込みシンボル

DISPLAYコマンドで特定のディスプレイを参照するたびにディスプレイ・ リストが更新され,必要な場合は順序も変更されます。最後に参照したディスプレイは最後にペーストボード上にペーストされるので, ディスプレイ・ リストの末尾に置かれます。ディスプレイ・リストはSHOW DISPLAYコマンドを入力すれば表示できます。

ディスプレイ組み込みシンボルを使用すると,ディスプレイをそれらのディスプレイ・ リスト内の相対的な位置で指定できます。これらのシンボルは, 次に示すとおり,明示的なディスプレイ名ではなくディスプレイ・リスト内の相対的な位置によってディスプレイを参照できます。 これらのシンボルは主にキーパッド・ キー定義またはコマンド・プロシージャの中で使用します。

ディスプレイ・シンボルはディスプレイ・リストを循環リストとして扱います。 したがって,ディスプレイ・シンボルを使用したコマンドを入力して, 必要なディスプレイに到達するまでディスプレイ・リスト全体を循環することができます。

%CURDISP 現在のディスプレイ。これがDISPLAY コマンドで参照した最新のディスプレイで,最も隠されることの少ないディスプレイである。
%CURSCROLL 現在のスクロール・ディスプレイ。これがSCROLL, MOVE ,およびEXPAN Dの各コマンドとそれに対応するキーパッド・ キー(KP2, KP4, KP6,およびKP8)用の省略時のディスプレイである。
%NEXTDISP リスト内で現在のディスプレイの後ろにある次のディスプレイ。 次のディスプレイとは最上部のディスプレイに次ぐディスプレイである。 ディスプレイ・ リストは循環しているので,これはペーストボードの最下部にあるディスプレイで最も隠されることの多いディスプレイである。
%NEXTINST ディスプレイ・リスト内で現在の機械語命令ディスプレイの後ろにある次の機械語命令ディスプレイ。 現在の機械語命令ディスプレイとはEXAMINE/INSTRUCTIONコマンドからの出力を受け取るディスプレイである。
%NEXTOUTPUT ディスプレイ・リスト内で現在の出力ディスプレイの後ろにある次の出力ディスプレイ。 出力ディスプレイは, まだ他のディスプレイへ出力されていないデバッガ出力を受け取る。
%NEXTSCROLL ディスプレイ・ リスト内で現在のスクロール・ディスプレイの後ろにある次のディスプレイ。
%NEXTSOURCE ディスプレイ・リスト内で現在のソース・ディスプレイの後ろにある次のソース・ ディスプレイ。現在のソース・ディスプレイはTYPEコマンドおよびEXAMINE/SOURCE コマンドからの出力を受け取るディスプレイである。

7.12 画面の寸法と定義済みウィンドウ

VTシリーズの端末では,画面は24行80桁または132桁で構成されます。ワークステーションでは, 画面は高さにおいても幅においてもそれより大きくなります。 デバッガは100行255桁までの画面サイズを収容できます。

デバッガには多くの定義済みウィンドウがあり,画面上でディスプレイの位置を設定するために使用できます。 画面の完全な高さと幅の他に,定義済みウィンドウには, 次の操作から求められる可能なすべての領域が含まれます。

SHOW WINDOWコマンドは定義済みのすべてのディスプレイ・ウィンドウを識別します。

定義済みウィンドウの名前には次の規則が適用されます。接頭辞のLとR は,それぞれ左ウィンドウと右ウィンドウを表します。他の英字は全画面(FS) または画面の高さ(H:半分,T:3分の1,Q:4分の1,S:6分の1,E:8 分の1)を表します。末尾の数字は画面の高さの場所(最上部から始まる) を表します。次に例を示します。

次の4つのコマンドは,サイズと位置が同一(スクリーンの上半分)であるウィンドウを持つディスプレイを作成します。

     DBG> DISPLAY XYZ AT H1 SOURCE
     DBG> DISPLAY XYZ AT Q12 SOURCE
     DBG> DISPLAY XYZ AT S123 SOURCE
     DBG> DISPLAY XYZ AT E1234 SOURCE

省略時の端末画面幅(80桁)の場合,定義済みウィンドウの左右の境界(start-column, column-count) は次のとおりです。

表 7-2は,24行という省略時の端末画面の高さに対して定義されている単一セグメント・ ディスプレイ・ ウィンドウの縦方向の境界(start-line,line-count)を示しています。表 7-2 には,E23 (ディスプレイ・ ウィンドウE2とE3の組み合わせから作成されたディスプレイ・ウィンドウ) などのように,複数のセグメントで構成されるウィンドウは示されていません。

表 7-2 定義済みウィンドウ

ウィンドウ名 start-line,line- count ウィンドウ位置
FS (1,23) 全画面
H1 (1,11) 上半分
H2 (13,11) 下半分
T1 (1,7) 最上部の3分の1
T2 (9,7) 中央の3分の1
T3 (17,7) 最下部の3分の1
Q1 (1,5) 最上部の4分の1
Q2 (7,5) 2番目の4分の1
Q3 (13,5) 3番目の4分の1
Q4 (19,5) 最下部の4分の1
S1 (1,3) 最上部の6分の1
S2 (5,3) 2番目の6分の1
S3 (9,3) 3番目の6分の1
S4 (13,3) 4番目の6分の1
S5 (17,3) 5番目の6分の1
S6 (21,3) 最下部の6分の1
E1 (1,2) 最上部の8分の1
E2 (4,2) 2番目の8分の1
E3 (7,2) 3番目の8分の1
E4 (10,2) 4番目の8分の1
E5 (13,2) 5番目の8分の1
E6 (16,2) 6番目の8分の1
E7 (19,2) 7番目の8分の1
E8 (22,2) 最下部の8分の1

7.13 各国に対応した画面モード

次のような論理名を定義することにより,画面モードに各国単位の機能を搭載することができます。


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]