前へ | 次へ | 目次 | 索引 |
サブプロセスを作成し,ユーザがデバッグ・セッションを終了したりデバッグ・コンテキストを失ったりせずに,DCL コマンドを実行できるようにします。
注意
このコマンドは,デバッガへの Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースでは使用できません。
SPAWN [DCL-command]
DCL-command
サブプロセスで実行する DCL コマンドを指定します。DCL コマンドが終了すると,制御はデバッグ・セッションに戻ります。DCL コマンドを指定しないと,サブプロセスが作成され,DCL コマンドを入力できるようになります。作成されたプロセスからログ・アウトするか,(DCL コマンドの ATTACH を使用して)親プロセスに接続すると,デバッグ・セッションを継続できるようになります。
DCL コマンドにセミコロンが含まれている場合には,そのコマンドを二重引用符(")で囲まなければなりません。セミコロンがない場合には,セミコロンはデバッガ・コマンドの区切り文字と解釈されます。文字列に二重引用符をいれるには,二重引用符を 2 つ続けて入力します("")。
/INPUT=file-spec
作成されたサブプロセスで実行される 1 つまたは複数の DCL コマンドを含む入力 DCL コマンド・プロシージャを指定します。省略時のファイル型は .COM です。SPAWN コマンドで DCL コマンド文字列を指定し,/INPUT で入力ファイルを指定すると,入力ファイルの前にコマンド文字列が処理されます。入力ファイルの処理が完了したあと,サブプロセスが終了します。ファイル指定にはワイルドカード文字のアスタリスク(*)は使用できません。/OUTPUT=file-spec
指定されたファイルに SPAWN 操作からの出力を書き込みます。省略時のファイル型は .LOG です。ファイル指定にはワイルドカード文字のアスタリスク(*)は使用できません。/WAIT(省略時の設定)
/NOWAIT
サブプロセスの実行中にデバッグ・セッション(親プロセス)を中断するかどうかを制御します。/WAIT 修飾子(省略時の設定)を指定すると,サブプロセスが終了するまでデバッグ・セッションは中断されます。制御が親プロセスに戻るまでデバッガ・コマンドは入力できません。/NOWAIT 修飾子を指定すると,サブプロセスがデバッグ・セッションと並行して実行されます。サブプロセスの実行中でもデバッガ・コマンドは入力できます。/NOWAIT を使用する場合には,SPAWN コマンドといっしょに DCL コマンドも指定してください。これで,DCL コマンドがサブプロセスで実行されるようになります。作成されたサブプロセスの完了を通知するメッセージが表示されます。
保持デバッガ(つまり,DEBUG/KEEPコマンドで起動されたデバッガ)は,SPAWN/NOWAIT コマンドによって実行される場合に,親プロセスと I/O チャネルを共用します。このため,Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースでは,DECterm 上でリターン・キーを2回押さなければなりません。デバッガは,デバッガ・バージョン番号がコマンド・ビューに表示された後に,DECterm から実行されます。
オプションでは,次の方法で保持デバッガを実行できます。
$ DEFINE DBG$INPUT NL: $ SPAWN/NOWAIT RUN DEBUG/KEEP
SPAWN コマンドは DCL コマンドの SPAWN と全く同じように働きます。デバッグ・セッションを終了したり現在のデバッグ・コンテキストを失ったりせずにファイルの編集,プログラムのコンパイル,メールの読み込みなどを行えます。さらに,DCL コマンドの SPAWN を実行することもできます。DCL は 2 番目の SPAWN コマンドを,そのコマンドで指定された修飾子も含めて処理します。
関連コマンド
ATTACH
#1 |
---|
DBG> SPAWN $ |
この例は,パラメータを指定されていない SPAWN コマンドが DCL レベルでサブプロセスを作成することを示します。これで DCL コマンドを入力することができます。デバッガのプロンプトに戻るにはログ・アウトします。
#2 |
---|
DBG> SPAWN/NOWAIT/INPUT=READ_NOTES/OUTPUT=0428NOTES |
このコマンドはデバッグ・セッションと並行して実行されるサブプロセスを作成します。このサブプロセスは DCL コマンド・プロシージャのREAD_NOTES.COM を実行します。作成された操作からの出力は0428NOTES.LOG ファイルに書き込まれます。
#3 |
---|
DBG> SPAWN/NOWAIT SPAWN/OUT=MYCOM.LOG @MYCOM |
このコマンドはデバッグ・セッションと並行して実行されるサブプロセスを作成します。このサブプロセスは DCL コマンド・プロシージャ MYCOML.COM を実行するためにもう 1 つ別のサブプロセスを作成します。その操作からの出力はMYCOM.LOG ファイルに書き込まれます。
次の行または命令,あるいは他に指定された記憶位置に達するまでプログラムを実行します。
STEP [integer]
integer
実行するステップ単位(行,命令など)の数を指定する 10 進整数。このパラメータを省略すると,デバッガは 1 つのステップ単位を実行します。
/BRANCH
次の分岐命令までプログラムを実行します。STEP/BRANCH は SET BREAK/TEMPORARY/BRANCH;GO と同じ働きをします。/CALL
次の呼び出しまたは復帰命令までプログラムを実行します。STEP/CALL は SET BREAK/TEMPORARY/CALL;GO と同じ働きです。/EXCEPTION
もしあれば,次の例外までプログラムを実行します。STEP/EXCEPTION は SET BREAK/TEMPORARY/EXCEPTION;GO と同じ働きです。例外が発生しないと,STEP/EXCEPTION は GO と同じ働きになります。/INSTRUCTION
/INSTRUCTION=(opcode[,...])
命令コードが指定されないと,次の命令までプログラムを実行します。STEP/INSTRUCTION は SET BREAK/TEMPORARY/INSTRUCTION;GO と同じ働きです。VAX プロセッサでは,1 つ以上の opcode を指定できます。デバッガは,opcode がリストに指定されている次の命令まで,プログラムを実行します。次のコマンドの結果は同じになります。
DBG> STEP/INSTRUCTION=(opcode[,...]) DBG> SET BREAK/TEMPORARY/INSTRUCTION=(opcode[,...]);GO
VAX プロセッサでは,ベクタ命令を指定する場合,命令ニーモニックに命令修飾子(/UNALIGNED_DATA,/VECTOR_INSTRUCTION,/MODIFY,/0 または /1)をいれることはできません。
/INTO
ルーチン呼び出しで実行が現在中断されている場合,STEP/INTO はそのルーチンの先頭までプログラムを実行します(そのルーチン内の命令をステップ実行する)。そうでない場合には,STEP/INTO は修飾子が指定されていない STEP と同じ働きです。/INTO 修飾子は /OVER(省略時の動作)とは逆になります。
注意
Alpha プロセッサで,例外ブレークで実行が停止された場合には,STEP/INTO は制御をユーザ例外ハンドラに渡しません。ハンドラにブレークポイントを設定することにより,ハンドラ内で実行を停止してください。
STEP/INTO の動作は,/[NO]JSB,/[NO]SHARE,/[NO]SYSTEM 修飾子を使用して変更することができます。
/JSB
/NOJSB
(VAX のみ)前回の SET STEP INTO コマンドまたは現在の STEP /INTO コマンドを修飾します。ルーチン呼び出しで実行が現在中断されていて,そのルーチンがJSB 命令で呼び出されている場合,STEP/INTO/NOJSB はSTEP/OVER と同じ働きです。そうでない場合,STEP/INTO/NOJSB はSTEP/INTO と同じ働きになります。
前回の SET STEP NOJSB コマンドを上書きするには STEP/INTO/JSB コマンドを使用します。STEP/INTO/JSBを指定すると,STEP/INTO はCALL 命令で呼び出されたルーチン内の命令だけでなく,JSB 命令で呼び出されたルーチン内の命令もステップ実行できるようになります。
/JSB 修飾子は DIBOL 以外のすべての言語の省略時の設定です。DIBOL の場合,/NOJSB 修飾子が省略時の設定です。DIBOL では,アプリケーション宣言ルーチンは CALL 命令で呼び出され,DIBOL 実行時ライブラリ・ルーチンはJSB 命令で呼び出されます。
/LINE
ソース・コードの次の行までプログラムを実行します。ただし,デバッガはコンパイルの結果,実行可能なコードにならないソース行(たとえば,コメント行)はスキップします。STEP/LINE は SET BREAK/TEMPORARY/LINE;GO と同じ働きです。これがすべての言語の省略時の設定です。/OVER
ルーチン呼び出しで実行が現在中断されている場合,STEP/OVER はそのルーチンの復帰命令まで,その命令も含めて実行します(そのルーチンを1 ステップとして実行します)。/OVER 修飾子は省略時の動作であり,/INTO とは逆になります。
注意
Alpha プロセッサでは,ルーチン呼び出しによってループを含むソース行で実行が中断されると,STEP/OVER は呼び出されたルーチンにステップします。次のプログラム文にステップするには,その文に一時的なブレークポイントを設定し,GO と入力します。
/RETURN
実行が現在中断されているルーチンをその復帰命令まで(つまり,制御を呼び出し元ルーチンに戻す直前のポイントに至るまで)実行します。この結果,復帰命令がルーチンの呼び出しフレームを呼び出しスタックから削除する前にローカル環境をチェックできます(たとえば,ローカル変数の値を獲得できます)。STEP/RETURN はSET BREAK/TEMPORARY/RETURN;GO と同じ働きです。STEP/RETURN n は呼び出しスタックの n レベルまでプログラムを実行します。
/SEMANTIC_EVENT
(Alpha のみ)プログラムを次のセマンティック・イベントに実行します。STEP/SEMANTIC_EVENTは,デバッグの最適化されたコードを簡素化します(説明の項を参照)。
/SHARE(省略時の設定)
/NOSHARE
前回の SET STEP INTO コマンドまたは現在の STEP/INTO コマンドを修飾します。共用可能イメージ・ルーチンへの呼び出しで実行が現在中断されている場合,STEP/INTO/NOSHARE は STEP/OVER と同じ働きです。そうでない場合,STEP/INTO/NOSHARE は STEP/INTO と同じ働きになります。
前回の SET STEP NOSHARE コマンドを上書きするには,STEP/INTO/SHARE を使用します。STEP/INTO/SHARE を指定すると,STEP/INTO は他の種類のルーチン内だけでなく,共用可能イメージ・ルーチン内の命令もステップ実行できるようになります。
/SILENT
/NOSILENT(省略時の設定)
STEP の完了後,"stepped to..." メッセージと現在の記憶位置のソース行を表示するかどうかを制御します。/NOSILENT 修飾子はメッセージを表示することを指定します。/SILENT 修飾子はメッセージとソース行を表示しないことを指定します。/SILENT 修飾子を指定すると,/SOURCE は上書きされます。/SOURCE(省略時の設定)
/NOSOURCE
STEP の完了後,現在の記憶位置のソース行を表示するかどうかを制御します。/SOURCE 修飾子はソース行を表示することを指定します。/NOSOURCE 修飾子はソース行を表示しないことを指定します。/SILENT 修飾子を指定すると,/SOUR CE は上書きされます。SET STEP [NO]SOURCE コマンドも参照してください。/SYSTEM(省略時の設定)
/NOSYSTEM
前回の SET STEP INTO コマンドまたは現在の STEP/INTO コマンドを修飾します。(P1 空間内の)システム・ルーチンへの呼び出しで実行が現在中断されている場合,STEP/INTO/NOSYSTEM は STEP/OVER と同じ働きです。そうでない場合,STEP/INTO/NOSYSTEM は STEP/INTO と同じ働きです。
前回の SET STEP NOSYSTEM コマンドを上書きするには,STEP/INTO/SYSTEM を使用します。STEP/INTO/SYSTEM を指定すると,STEP/INTO は他の種類のルーチン内だけでなく,システム・ルーチン内の命令もステップ実行できるようになります。
/VECTOR_INSTRUCTION
(VAX のみ)次のベクタ命令までプログラムを実行します。STEP/VECTOR_INSTRUCTION は SET BREAK/TEMPORARY/VECTOR_INSTRUCTION;GO と同じ働きです。
STEP コマンドはプログラムを実行するために使用できる 4 つのデバッガ・コマンドの 1 つです(他の 3 つは CALL,EXIT,GO です)。STEP コマンドの動作は次の要因に依存します。
- 前回の SET STEP コマンドで設定された省略時の STEP モード(ただし,設定されている場合)。
- STEP コマンドで指定された修飾子(ただし,指定されている場合)。
- STEP コマンドのパラメータとして指定されたステップ単位の数(ただし,指定されている場合)。
それまでに SET STEP コマンドを入力していない場合,修飾子もパラメータも指定せずに STEP コマンドを入力すると,デバッガは次の省略時の動作を行います。
- ソース・コードを 1 行実行する(省略時の設定は STEP/LINE)。
- "stepped to..."メッセージを発行することにより実行が完了したことを通知する(省略時の設定は STEP/NOSILENT)。
- 実行が中断されているソース・コードの行を表示する(省略時の設定は STEP/SOURCE)。
- プロンプトを表示する。
次の修飾子は命令をステップ実行する記憶位置に影響します。
/BRANCH
/CALL
/EXCEPTION
/INSTRUCTION
/INSTRUCTION=(opcode[,...])(VAX のみ)
/LINE
/RETURN
/SEMANTIC_EVENT(Alpha のみ)
/VECTOR_INSTRUCTION(VAX のみ)次の修飾子は 1 つのステップの完了時にどのような出力になるかに影響します。
/[NO]SILENT
/[NO]SOURCE次の修飾子はルーチン呼び出し時に何が起きるかに影響します。
/INTO
/[NO]JSB(VAX のみ)
/OVER
/[NO]SHARE
/[NO]SYSTEM同じ修飾子を指定して STEP コマンドを複数入力する予定ならば,最初に SET STEP コマンドを使用して新しい省略時の修飾子を設定することができます(たとえば,SET STEP INTO, NOSYSTEM と指定すれば,STEP コマンドは STEP/INTO/NOSYSTEM と同じ働きをするようになります)。この結果,STEP コマンドを指定するときにこれらの修飾子を使用する必要がなくなります。他の修飾子を指定することにより,1 つの STEP コマンドが継続している間,現在の省略時の修飾子を上書きすることができます。現在のSTEP コマンドの省略時の設定を示すには,SHOW STEP コマンドを使用します。
SET BREAK/EXCEPTION コマンドまたは STEP/EXCEPTION コマンドを実行した結果,例外ブレークポイントが検出されると,アプリケーション宣言条件ハンドラが起動される前に実行は中断されます。そのあと,STEP コマンドで実行を再開すると,デバッガは例外を再びシグナル通知し,条件ハンドラがあればその先頭までプログラムは実行されます(条件ハンドラ内の命令がステップ実行されます)。
Alphaシステムでは,プログラムが/OPTIMIZEを使用してコンパイルされた場合は,STEP/SEMANTIC_EVENTおよびSET STEP SEMANTIC_EVENTコマンドを使用してセマンティック・ステップ・モードを使用することができます。最適化されたコードをデバッグしている場合は,ソース・プログラムの明らかな記憶位置は,同じ行が繰り返し現れる状態で前後にバウンドする傾向があります。セマンティック・ステップ・モードでは,プログラムは,プログラム内の次のポイントまで実行します。次のポイントでは,顕著な効果(セマンティック・イベント)が現れます。
セマンティック・イベントは次のうちの1つです。
- データ・イベント --- ユーザへの割り当てが可能
- 制御イベント --- 呼び出し以外の条件付きまたは条件なしの転送の制御で,制御フローの決定
- 呼び出しイベント --- 呼び出し(ステップされないルーチン)または呼び出しからの戻り
すべての割り当て,転送制御,または呼び出しがセマンティック・イベントというわけではありません。主な例外は次のようになります。
- 2 つの命令が,複雑な値または X 浮動の値に割り当てる必要がある場合は,最初の命令だけがセマンティック・イベントとして扱われます。
- あるケースまたは選択構造を実行する判断ツリーの分岐など,単一の上位レベル構造の一部である分岐が複数ある場合は,最初のイベントだけがセマンティック・イベントとして扱われます。
- 一種の文字列または記憶域のコピー操作を処理するOTS$MOVEへの呼び出しなどの,コンパイラ指定のヘルプ・ルーチンであるルーチンに呼び出しが作成された場合は,呼び出しはセマンティック・イベントとはみなされません。呼び出しの際に,制御は終了しません。
ルーチンにステップするには,次のいずれかを行わなければなりません。
- ルーチン・エントリ・ポイントにブレークポイントを設定するか,または
- 一連のSTEP/INSTRUCTIONコマンドを使用して関連する呼び出しに到達した後に,STEP/INSTRUCTION/INTOを使用して呼び出されたルーチンに入ります。
- 同じ行番号で,1行につき1つ以上の潜在的なセマンティック・イベントがある場合は,最初のイベントだけがセマンティック・イベントとして扱われます。
STEP/SEMANTIC_EVENTコマンドは,ブレークポイントが次のセマンティック・イベントに設定されるようにします。実行は,次のイベントに進みます。異なる行および文のすべての番号部分は,進行を妨げられすに,方法に従って実行される可能性があります。セマンティック・イベントが到達した場合(つまり,イベントに対応する命令が到達しているが,実行されていない場合)実行は中断されます(STEP/LINEを使用する場合の,次行への到達と似ています)。
デバッガの最適化されたプログラムについての詳細は,『Compaq OpenVMSデバッガ説明書』を参照してください。
マルチプロセス・プログラムをデバッグしているときには,STEP コマンドは現在のプロセス・セットのコンテキストで実行されます。さらに,マルチプロセス・プログラムをデバッグしているときのプロセス内での実行のされ方は,入力したコマンドが SET MODE [NO]INTERRUPT コマンドか,それとも SET MODE [NO]WAIT コマンドかによって異なります。省略時の設定(SET MODE NOINTERRUPT)では,1 つのプロセスが停止しても,デバッガは他のプロセスに関しては何のアクションも行いません。また,やはり省略時の設定(SET MODE WAIT)では,デバッガは現在のプロセス・セットの中のすべてのプロセスが停止するのを待ってから,新しいコマンドの入力を求めるプロンプトを表示します。詳細は,『Compaq OpenVMS デバッガ説明書』を参照してください。
VAXシステムでは,STEP/OVER コマンドは Fortran Run-Time Library ルーチンへと,飛び越されずに,ステップすることになります。詳細は,『Compaq OpenVMS デバッガ説明書』を参照してください。
関連コマンド
CALL
EXIT
GO
SET BREAK/EXCEPTION
SET MODE [NO]INTERRUPT
SET PROCESS
(SET,SHOW)STEP
#1 |
---|
DBG> SHOW STEP step type: source, nosilent, by line, over routine calls DBG> STEP stepped to SQUARES$MAIN\%LINE 4 4: OPEN(UNIT=8, FILE='DATAFILE.DAT', STATUS='OLD') DBG> |
この例では,SHOW STEP コマンドはSTEP コマンドに対して現在有効になっている省略時の修飾子を示します。この場合,STEP コマンドにはパラメータも修飾子も指定されていないため,ソース・コードの次の行を実行します。STEP コマンドの完了後,実行は 4 行目の先頭で中断されます。
#2 |
---|
DBG> STEP 5 stepped to MAIN\%LINE 47 47: SWAP(X,Y); DBG> |
このコマンドはソース・コードの次の 5 行を実行します。STEP コマンドの完了後,実行は 47 行目の先頭で中断されます。
#3 |
---|
DBG> STEP/INTO stepped to routine SWAP 23: procedure SWAP(A,B: in out integer)is DBG> STEP stepped to MAIN\SWAP\%LINE 24 24: TEMP: integer := 0; DBG> STEP/RETURN stepped on return from MAIN\SWAP\%LINE 24 to MAIN\SWAP\%LINE 29 29: end SWAP; DBG> |
この例では,実行は SWAP ルーチンへの呼び出しで一時停止され,STEP/INTO コマンドは呼び出し先ルーチンの先頭までプログラムを実行します。STEP/RETURN コマンドは SWAP ルーチンの残りの部分をその RET 命令まで(つまり,制御を呼び出し元ルーチンに戻す直前のポイントに至るまで)実行します。
#4 |
---|
DBG> SET STEP INSTRUCTION DBG> SHOW STEP step type: source, nosilent, by instruction, over routine calls DBG> STEP stepped to SUB1\%LINE 26: MOVL S^#4,B^-20(FP) 26: Z:integer:=4; DBG> |
この例では,SET STEP INSTRUCTION コマンドは省略時の STEP コマンド修飾子として /INSTRUCTION を設定します。これは SHOW STEP コマンドでチェックされます。STEP コマンドは次の命令を実行します。STEP コマンドの完了後,実行は SUB1 モジュールの 26 行目の最初の命令(MOVL)で中断されます。
前へ | 次へ | 目次 | 索引 |