HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
省略時の設定では,対応するソース行をデバッガが表示するのは,ブレークポイント,トレースポイント,ウォッチポイントの検出後,または 1 つの STEP コマンドが完了したときです。
STEP コマンドを入力した場合,デバッガはステップ実行後に実行が一時停止した位置のソース行を表示します。次に例を示します。
DBG> STEP
stepped to MAIN\%LINE 16
16: RANGE := 500;
DBG>
|
ブレークポイントまたはトレースポイントが検出された場合,デバッガはそのブレークポイントまたはトレースポイントの位置のソース行を表示します。次に例を示します。
DBG> SET BREAK SWAP
DBG> GO
.
.
.
break at MAIN\SWAP
47: procedure SWAP(X,Y: in out INTEGER) is
DBG>
|
ウォッチポイントが検出された場合,デバッガはそのウォッチポイントが検出される原因となった命令に対応するソース行を表示します。
SET STEP [NO]SOURCE コマンドを使用すると,1 ステップの実行後のソース・コードの表示,またはブレークポイント,トレースポイント,ウォッチポイントでのソース・コードの表示を制御することができます。 SET STEP SOURCE ( 省略時の設定 ) はソースの表示を有効にします。 SET STEP NOSOURCE はソースの表示を無効にします。次に例を示します。
DBG> SET STEP NOSOURCE DBG> STEP stepped to MAIN\%LINE 16 DBG> SET BREAK SWAP DBG> GO . . . break at MAIN\SWAP DBG> |
SET STEP SOURCE コマンドまたは SET STEP NOSOURCE コマンドの効力を選択的に上書きするには,STEP, SET BREAK, SET TRACE,および SET WATCH の各コマンドに /SOURCE および /NOSOURCE の修飾子を使用します。
STEP/SOURCE コマンドは SET STEP NOSOURCE コマンドの効力を上書きしますが,それはその STEP コマンドが実行される間だけです。同様に, STEP/NOSOURCE も SET STEP SOURCE の効力をその STEP コマンドが実行される間だけ上書きします。次に例を示します。
DBG> SET STEP NOSOURCE
DBG> STEP/SOURCE
stepped to MAIN\%LINE 16
16: RANGE := 500;
DBG>
|
SET BREAK/SOURCE コマンドは SET STEP NOSOURCE コマンドの効力を上書きしますが,それはその SET BREAK コマンドによって設定されたブレークポイントに対してだけです。同様に,SET BREAK/NOSOURCE も SET STEP SOURCE の効力をその SET BREAK コマンドによって設定されたブレークポイントに対してだけ上書きします。この規則は SET TRACE と SET WATCH にも適用されます。次に例を示します。
DBG> SET STEP SOURCE DBG> SET BREAK/NOSOURCE SWAP DBG> GO . . . break at MAIN\SWAP DBG> |
SET MARGINS コマンドを使用すると,ソース行の表示を開始し終了する左端と右端のソース行文字位置 ( 左マージンと右マージン ) が指定できます。これは,たとえばコードが深くインデントされていたり,長い行が右マージンで折り返したりする場合に,ソース・コードの表示を制御するのに役立ちます。このような場合には,インデントされたスペースをソースの表示で削除するために左マージンを設定したり,行を切り捨てて折り返しを防ぐために右マージンを減らしたりできます。
たとえば,次のコマンド行は左マージンを桁25,右マージンを桁35に設定します。
DBG> SET MARGINS 20:35 |
このあとでソース行を表示するコマンド ( たとえば,TYPE, SEARCH, STEP) を入力すると,ソース・コードの桁 20 と桁 35 の間の部分だけが表示されます。ソース行表示の現在のマージン設定を示すには,SHOW MARGINS コマンドを使用します。
SET MARGINS コマンドはソース行の表示だけにしか影響を及ぼさないので注意してください。このコマンドは,その他のデバッガ出力 ( たとえば EXAMINE コマンドによる出力など ) の表示には影響しません。
ほとんどの場合,SET MARGINS コマンドは行 ( 非画面 ) モードで役立ちます。画面モードでは,SET MARGINS コマンドは定義済みディスプレイ「SRC」などのソースの表示におけるソース行の表示には効力を持ちません。
画面モードは,OpenVMS デバッガのコマンド行インタフェースの拡張機能であり,このモードでは, HP DECwindows Motif for OpenVMS ユーザ・インタフェースの場合と同じ方法で ( 第 3 部 を参照),デバッグ・セッションに関する個別のデータ・グループを同時に表示できます。たとえば,画面の一部分にソース・コードを表示し,別の部分にレジスタの内容を表示し,さらに別の部分にデバッガからの出力を表示できます。
画面モードを起動するには,キーパッドの PF3 を押します ( または SET MODE SCREEN コマンドを入力します )。コマンド行インタフェースによるデバッグに戻るには,PF1 PF3 を押します ( または SET MODE NOSCREEN コマンドを入力します )。
デバッガに対する DECWindows Motif インタフェースの内部から画面モードを開始することはできません。 |
画面モード出力は,VT52 以上のVTシリーズ端末,および VWS を使用しているワークステーションの場合に最適です。特に,ワークステーションの画面が大きいほど,多数の画面をさまざまな目的に使用するのに適しています。
本章には次の内容が含まれています。
画面モード・コマンドの多くはキーパッド・キーにバインドされています。キー定義については, 付録 A を参照してください。
本章では,1 つまたは複数のプロセスで実行されるプログラムに共通した情報を提供します。その他のマルチプロセス・プログラム固有の情報については, 第 15 章 を参照してください。 |
ディスプレイ とはテキスト行のまとまりのことです。テキストには,ソース・ファイルに入っている行,アセンブリ言語の命令,レジスタに入っている値,ユーザからデバッガへの入力,デバッガ出力,またはプログラム入出力 (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 に作成します。 (ウィンドウ Q3 は,ウィンドウの画面寸法を示します。画面寸法と,定義済みのウィンドウについては, 第 7.12 節 を参照してください。) デバッガがプログラムから制御を受け取るたびに 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 コマンドを使用します。
| 前へ | 次へ | 目次 | 索引 |