HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
デバッガの強制終了機能を他の Ctrl キー・シーケンスに割り当てます。省略時には,Ctrl/C が強制終了機能になります。
注意
このコマンドは,デバッガへの HP DECwindows Motif for OpenVMS ユーザ・インタフェースでは使用できません。
SET ABORT_KEY = CTRL_character
character
Ctrl キーを押している間に押すキーを指定します。どの英数字のキーでも指定できます。
省略時の設定では,デバッグ・セッション中に Ctrl/C を入力すると,デバッガ・コマンドの実行が強制終了され,プログラムの実行に割り込みがかかります。 SET ABORT_KEY コマンドを使用して,この強制終了機能を他の Ctrl キー・シーケンスに割り当てることができます。これは,プログラムで Ctrl/C AST サービス・ルーチンを使用する場合に必要です。Ctrl キー・シーケンスには定義済みの機能がすでに割り当てられている場合が多く,SET ABORT_KEY コマンドを実行すると,このようなキー定義が上書きされます『OpenVMS ユーザーズ・マニュアル』を参照してください。オペレーティング・システムの Ctrl キー文字で使用されていないのは, G,K,N,および P です。
SHOW ABORT_KEY コマンドは,現在有効な強制終了機能として Ctrl キーシーケンスを表示します。
デバッグ・セッションでは Ctrl/Y は使用できません。代わりに,Ctrl/C を使用するか,SET ABORT_KEY コマンドで設定した同等の Ctrl キー・シーケンスを使用してください。
関連コマンド
Ctrl/C
Ctrl/Y
SHOW ABORT_KEY
DBG> SHOW ABORT_KEY
Abort Command Key is CTRL_C
DBG> GO
...
[Ctrl/C]
DBG> EXAMINE/BYTE 1000:101000 !should have typed 1000:1010
1000: 0
1004: 0
1008: 0
1012: 0
1016: 0
[Ctrl/C]
%DEBUG-W-ABORTED, command aborted by user request
DBG> SET ABORT_KEY = CTRL_P
DBG> GO
...
[Ctrl/P]
DBG> EXAMINE/BYTE 1000:101000 !should have typed 1000:1010
1000: 0
1004: 0
1008: 0
1012: 0
1016: 0
[Ctrl/P]
%DEBUG-W-ABORTED, command aborted by user request
DBG>
|
この例は,次のことを示しています。
- 強制終了機能には Ctrl/C を使用する (省略時)。
- Ctrl/P に強制終了機能を再割り当てするには, SET ABORT_KEY コマンドを使用する。
デバッガがコマンド・プロシージャの検索に使用する省略時のファイル指定を設定します。
SET ATSIGN file-spec
file-spec
省略時にデバッガがコマンド・プロシージャの検索に使用するファイル指定の任意の部分 ( たとえば,ディレクトリ名またはファイルの種類など) を指定します。完全なファイル指定を行わないと,デバッガは,欠落しているフィールドの省略時のファイル指定は SYS$DISK:[]DEBUG.COM であるとみなします。検索リストに変換する論理名を指定できます。この場合,デバッガは,目的のコマンド・プロシージャが見つかるまで,検索リストに並んでいる順にファイル指定を処理します。
実行プロシージャ (@) コマンドでデバッガ・コマンド・プロシージャを起動すると,デバッガは,省略時の設定として,コマンド・プロシージャのファイル指定が SYS$DISK:[]DEBUG.COM であるとみなします。 SET ATSIGN コマンドを指定すると,この省略時の設定を上書きできます。関連コマンド
@ (実行プロシージャ)
SHOW ATSIGN
DBG> SET ATSIGN USER:[JONES.DEBUG].DBG DBG> @TEST |
この例では,@TEST コマンドを実行するとデバッガが USER:[JONES.DEBUG] 内で TEST.DBG ファイルを探します。
特定のクラスの命令または指定されたイベントの発生時に,アドレス式で示された記憶位置にブレークポイントを設定します。
SET BREAK [address-expression[,...]]
[WHEN(conditional-expression)]
[DO(command[;...])]
address-expression
ブレークポイントを設定するアドレス式 ( プログラム記憶位置 ) を指定します。高級言語の場合,これはたいてい,行番号,ルーチン名,またはラベルです。値を一意に指定するパス名をいれることもできます。また,アドレス式はメモリ・アドレスまたはレジスタの場合もあります。数字 ( オフセット ) とシンボルで構成したり,1 つまたは複数の演算子,オペランド,または区切り文字で構成したりできます。アドレス式で使用できる演算子についての詳しい説明は,ヘルプ・トピック Address_Expressions を参照してください。ワイルドカード文字のアスタリスク (*) は使用できません。また次の修飾子では,アドレス式を指定できません。
/ACTIVATING
/BRANCH
/CALL
/EXCEPTION
/HANDLER
/INSTRUCTION
/INSTRUCTION=(opcode[,...]) (VAX のみ)
/INTO
/[NO]JSB (VAX のみ)
/LINE
/OVER
/[NO]SHARE
/[NO]SYSTEM
/SYSEMULATE (Alpha のみ)
/TERMINATING
/UNALIGNED_DATA (Alpha および I64 のみ)/MODIFY 修飾子と /RETURN 修飾子は,特定の種類のアドレス式に指定できます。
メモリ・アドレスを指定したり,値がシンボリック記憶位置でないアドレス式を指定する場合は,これにより指定されたメモリ・バイトで命令が実際に始まっているかを (EXAMINE コマンドを使用して ) チェックしてください。命令がこのバイトで始まっていないと,そのバイトを持つ命令を実行したときに実行時エラーが発生します。値がシンボリック記憶位置でないアドレス式を指定してブレークポイントを設定しても,デバッガは指定された記憶位置が命令の開始位置を示しているかどうかをチェックしません。
たとえば,VAX システムの場合は,CALLS ルーチンと CALLG ルーチンは,エントリ・マスクで始まります。
conditional-expression
現在設定されている言語で条件式を指定します。この式は実行がブレークポイントに達したときに評価されます。 ( ブレークポイントが設定されたときではなく,実行がブレークポイントに達すると,デバッガは WHEN 句にある式の構文をチェックします。) 式が真であれば,デバッガは,ブレークポイントがトリガされたことを報告します。ブレーク・アクション (DO 句 ) がブレークポイントと関連付けられている場合は,同時に実行されます。式が偽の場合は報告されません。また,DO 句によって指定されたコマンドは実行されず,プログラムの実行は続行されます。command
ブレーク・アクションが実行されたときに,DO 句の一部として実行されるデバッガ・コマンドを指定します。ブレークポイントが設定されたときではなく,DO 句が実行されると,デバッガは DO 句にある式の構文をチェックします。
/ACTIVATING
新しいプロセスがデバッガの制御下に置かれると,デバッガはブレークします。最初のプロセスがデバッガの制御下に置かれると,デバッガ・プロンプトが表示されます。この結果,プログラムが実行を開始する前にデバッガ・コマンドを入力できます。 /TERMINATING 修飾子も参照してください。/AFTER:n
指定されたブレークポイントが n 回検出されるまで,ブレーク・アクションを行わないことを指定します (nは 10 進整数です )。それ以降は,WHEN 句の条件 ( 指定された場合 ) が真ならば,検出されるたびにブレークポイントが発生します。 SET BREAK/AFTER:1 コマンドは,SET BREAK と同じです。/BRANCH
プログラムの実行中に分岐命令を検出するたびに,デバッガがブレークします。 /INTO 修飾子と /OVER 修飾子も参照してください。/CALL
プログラムの実行中に呼び出し命令 (RET 命令を含む ) を検出するたびにデバッガがブレークします。 /INTO 修飾子と /OVER 修飾子も参照してください。/EVENT=event-name
指定されたイベントが発生する ( 現在のイベント機能によってイベントが定義され,そのイベントが検出される ) と,デバッガがブレークします。アドレス式に /EVENT を指定すると,そのアドレス式に対して指定されたイベントが発生するたびにデバッガがブレークします。アドレス式に特定のイベント名を指定することはできません。イベント機能は,Ada ルーチンまたは SCAN ルーチンを呼び出すプログラムまたは POSIX Threads サービスを使用するプログラムで使用できます。現在のイベント機能および関連したイベント名を表示するには, SHOW EVENT_FACILITY コマンドを使用します。
/EXCEPTION
例外がシグナル通知されるたびにデバッガがブレークします。ブレーク・アクションは,アプリケーションが宣言した例外ハンドラが起動される前に実行されます。プログラムが例外を生成すると,SET BREAK/EXCEPTION コマンドの結果として,デバッガはプログラムの実行を中断して例外を報告し,そのプロンプトを表示します。例外ブレークポイントから実行を再開した場合,次のいずれかの動作が実行されます。
- address-expression パラメータを指定しないで GO コマンドを入力すると,例外が再度シグナル通知されます。その結果,アプリケーションで宣言した例外ハンドラを実行できます。
- address-expressionパラメータを指定して GO コマンドを入力すると,指定された記憶位置からプログラムが続行されます。そのため,アプリケーションで宣言した例外ハンドラは実行できません。
- VAX 上で,STEP コマンドを入力すると,デバッガはアプリケーションで宣言した例外ハンドラ内の命令をステップ実行します。その例外に対してアプリケーションで宣言したハンドラがないと,デバッガは例外を再度シグナル通知します。
Alpha 上では,ハンドラ内でのデバッガの実行を一時停止するための STEP コマンドまたは GO コマンドを入力する前に,例外ハンドラにブレークポイントを明示的に設定しなければなりません。- CALL コマンドを入力した場合,指定されたルーチンが実行されます。
Alpha プロセッサでは,例外が発生した命令実行の直後に,例外を ( プログラムまたはデバッガに ) 通知できないことがあります。したがって,デバッガは,実行の結果実際に例外を生成した命令よりあとの命令で実行を中断することがあります。
/HANDLER
デバッグしているプログラムに例外がある場合,デバッガは呼び出しスタックをスキャンし,設定されているフレーム・ベースの各ハンドラでブレークポイントを設定しようとします。デバッガは,標準の RTL ハンドラとユーザ設定ハンドラを区別しません。Alpha システムおよび I64 システムでは,ユーザ・プログラムが独自のハンドラを定義しているフレームで,多くの RTL がジャケット RTL ハンドラを設定します。この RTL ジャケットは,設定,引数の操作を行い,ユーザが作成したハンドラにディスパッチします。例外を処理する場合,ジャケット RTL ハンドラが呼び出しスタック上のアドレスであるため,デバッガはそこにだけブレークポイントを設定できます。デバッガがジャケット RTL ハンドラでプログラムの実行を中止した場合には,通常,STEP/CALL コマンドを数回と STEP/INTO コマンドを実行してディスパッチ・ポイントを見つけることにより,ユーザ定義ハンドラに到達することができます。
フレーム・ベースのハンドラの詳細については, OpenVMS 呼び出し規則を参照してください。
ジャケット RTL ハンドラが,ALPHA LIBOTS など,インストールされている共用イメージの一部である場合には,デバッガはそこにブレークポイントを設定できません (プライベート・ユーザ・モード書き込みアクセスなし)。この場合には,次の例のように論理名によってすべての RTL をプライベート・イメージとして有効にしてください。
$DEFINE LIBOTS SYS$SHARE:LIBOTS.EXE;
最後のセミコロン (;) は必ず指定してください。また,インストールされている共用 RTL は,すべてをプライベートで有効にするか,どれもプライベートで有効にしないかの,どちらかでなければなりません。 SHOW IMAGE/FULL データを使用してシステム空間のコード・セクションのイメージ・リストを認識してから,すべてのセクション用の論理名を定義し,デバッグ・セッションを再実行してください。
/INSTRUCTION
/INSTRUCTION[=(opcode[,...])]
命令コードを指定しないと,プログラム実行中に命令を検出するたびにデバッガがブレークします。VAX プロセッサの場合に限り,命令コードを 1 つまたは複数個選択して指定できます。これによって,リスト内で指定した命令コードが実行されるたびに,デバッガがブレークします。
/INTO 修飾子と /OVER 修飾子も参照してください。
/INTO
省略時の設定。次の修飾子で設定されているブレークポイント ( すなわち,アドレス式が明示的に指定されていない場合 ) にだけ指定できます。/BRANCH
/CALL
/INSTRUCTION
/INSTRUCTION=(opcode[,...]) (VAX のみ)
/LINEこれらの修飾子といっしょに使用すると,/INTO は,呼び出されたルーチン内 ( 実行が現在中断されているルーチン内だけでなく ) の指定された地点でデバッガがブレークします。 /INTO 修飾子は省略時の設定であり,/OVER の反対です。
/INTO を使用すると,/[NO]JSB,/[NO]SHARE,および /[NO]SYSTEM でブレーク・アクションをさらに修飾できます。
/JSB
/NOJSB
(VAX のみ ) /INTO を修飾します。 /INTO と次のいずれかの修飾子といっしょに使用します。/BRANCH
/CALL
/INSTRUCTION
/INSTRUCTION=(opcode[,...])
/LINE/JSB 修飾子は,DIBOL 以外のすべての言語における省略時の値です。デバッガは,JSB 命令または CALL 命令によって呼び出されるルーチン内でブレークします。 /NOJSB 修飾子 (DIBOL のときの省略時の設定 ) は, JSB 命令によって呼び出されるルーチン内でブレークポイントを設定しないことを指定します。 DIBOL の場合,アプリケーションで宣言したルーチンは CALL 命令によって呼び出され,DIBOL 実行時ライブラリ・ルーチンが JSB 命令によって呼び出されます。
/LINE
プログラムの実行中にソース行が検出されるたびにその行の先頭で,デバッガがブレークします。 /INTO 修飾子と /OVER 修飾子も参照してください。/MODIFY
アドレス式が示す記憶位置に値を書き込んで変更する命令を検出するたびに,デバッガがブレークします。アドレス式は,通常の場合変数名です。SET BREAK/MODIFY コマンドは,SET WATCH コマンドと全く同じように動作し,同じ制限事項が適用されます。
アドレス式に絶対アドレスを指定すると,デバッガがアドレスを特定のデータ・オブジェクトに関連づけることができない場合があります。この場合,デバッガは省略時の長さとして 4 バイトを使用します。ただし,この長さは,入力を WORD (SET TYPE WORD で省略時の長さを 2 バイトに変更する ) か BYTE (SET TYPE BYTE で省略時の長さを 1 バイトに変更する ) に設定すれば変更できます。SET TYPE LONGWORD を指定すると,省略時の長さは 4 バイトに戻ります。
/OVER
次のいずれかの修飾子で設定されているブレークポイント ( すなわち,アドレス式が明示的に指定されていない場合 ) だけに指定できます。/BRANCH
/CALL
/INSTRUCTION
/INSTRUCTION=(opcode[,...]) (VAX のみ)
/LINEこれらの修飾子といっしょに /OVER を使用すると, ( 呼び出されたルーチン内ではなく ) 現在実行を中断しているルーチン内だけの指定された地点でデバッガはブレークします。 /OVER 修飾子は,/INTO ( 省略時の設定 ) の反対です。
/RETURN
指定されたアドレス式 ( ルーチン名,行番号など ) に関連しているルーチンの復帰命令でデバッガがブレークします。復帰命令でブレークすると,ルーチンがアクティブである間ローカル環境を調べること ( たとえば,ローカル変数の値を得るなど ) ができます。ローカル環境のビューはアーキテクチャにより異なるので注意してください。VAX プロセッサの場合,この修飾子は,CALLS 命令または CALLG 命令で呼び出したルーチンにだけ指定できます。 JSB ルーチンでは使用できません。 Alpha プロセッサの場合,この修飾子は,どのルーチンにも指定できます。
address-expression パラメータは,ルーチン内の命令アドレスです。単なるルーチン名の場合もあります。この場合は,ルーチンの開始アドレスを指定します。ただし,ルーチン内の別の記憶位置を指定することもできます。こうすると,特定のプログラム部分を実行したあとに行われる戻りだけを表示できます。
SET BREAK/RETURN コマンドで SET BREAK と同じアドレス式を指定すると,前回の SET BREAK は取り消されます。
/SHARE (省略時の設定)
/NOSHARE
/INTO を修飾します。 /INTO と次のいずれかの修飾子といっしょに使用します。/BRANCH
/CALL
/INSTRUCTION
/INSTRUCTION=(opcode[,...]) (VAX のみ)
/LINE/SHARE 修飾子を使用すると,他のルーチンだけでなく共用可能イメージ・ルーチン内でもデバッガをブレークできます。 /NOSHARE 修飾子は,共用可能イメージ内でブレークポイントを設定しないことを指定します。
/SILENT
/NOSILENT (省略時の設定)
"break..." メッセージと,現在の記憶位置のソース行をブレークポイントで表示するかどうかを制御します。/NOSILENT 修飾子を指定すると,メッセージが表示されます。 /SILENT 修飾子を指定すると,メッセージとソース行は表示されません。 /SILENT 修飾子を指定すると,/SOURCE は上書きされます。 SET STEP [NO]SOURCE コマンドも参照してください。/SOURCE (省略時の設定)
/NOSOURCE
現在の記憶位置のソース行をブレークポイントで表示するかどうかを制御します。/SOURCE 修飾子を指定すると,ソース行が表示されます。 /NOSOURCE 修飾子を指定すると,ソース行は表示されません。 /SILENT 修飾子を指定すると,/SOURCE は上書きされます。 SET STEP [NO]SOURCE コマンドも参照してください。/SYSEMULATE[=mask]
(Alpha のみ ) オペレーティング・システムが命令をエミュレートした後,プログラムの実行を停止し,制御をデバッガに戻します。 mask は省略可能な引数であり,エミュレートされたどの命令グループがブレークポイントを発生させるかを指定するためのビットを設定した符号なしクォドワードです。現在定義されているエミュレート済み命令グループは, BYTE 命令と WORD 命令です。この命令グループは, mask のビット 0 を 1 に設定することにより選択します。mask が指定されていない場合や, mask = FFFFFFFFFFFFFFFF の場合には,オペレーティング・システムが任意の命令をエミュレートしたときに,デバッガはプログラムの実行を停止します。
/SYSTEM (省略時の設定)
/NOSYSTEM
/INTO を修飾します。/INTO と次のいずれかの修飾子といっしょに使用します。/BRANCH
/CALL
/INSTRUCTION
/INSTRUCTION=(opcode[,...]) (VAX のみ)
/LINE/SYSTEM 修飾子を指定すると,他のルーチンだけでなくシステム・ルーチン (P 1 空間 ) 内でもデバッガがブレークできます。 /NOSYSTEM 修飾子を指定すると,システム・ルーチン内ではブレークポイントが設定されません。
/TEMPORARY
ブレークポイントを検出したあとでブレークポイントを消去します ( ブレークポイントを一時的に設定するときに使用します )。/TERMINATING
プロセスがイメージを終了したときにデバッガがブレークします。デバッガに制御が戻り,単一プロセス・プログラムまたはマルチプロセス・プログラムの最後のイメージが終了すると,そのプロンプトを表示します。イメージが $EXIT システム・サービスを実行し,その終了ハンドラがすべて実行されると,プロセスは終了します。 /ACTIVATING 修飾子も参照してください。/UNALIGNED_DATA
(Alpha および I64 のみ) 境界に合っていないデータにアクセスすると,その命令の直後 ( たとえば,ワード境界にないデータにアクセスするワード・ロード命令のあとで ) でデバッガがブレークします。
ブレークポイントが検出されると,デバッガは次のいずれかの動作を行います。
- ブレークポイント設定位置でプログラムの実行を中断する。
- ブレークポイントの設定時に /AFTER を指定した場合,AFTER 回数をチェックする。指定された回数に達していないと実行が再開され,デバッガは残りのステップを実行しない。
- ブレークポイントの設定時に WHEN 句を指定した場合, WHEN 句の式を評価する。式の値が偽であれば実行が再開され,デバッガは残りのステップに実行を移さない。
- /SILENT が指定されていない場合, "break..." メッセージを発行して,プログラム制御がブレークポイント設定位置にきたことを報告する。
- ブレークポイントの設定時に /NOSOURCE も /SILENT も指定しないか,または SET STEP NOSOURCE を入力していない場合,実行を中断したソース・コード行を表示する。
- ブレークポイントの設定時に DO 句を指定していれば,その DO 句内のコマンドを実行する。 DO 句に GO コマンドが含まれていれば実行を続行し,デバッガは次のステップに移らない。
- プロンプトを表示する。
前へ 次へ 目次 索引