日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
Alpha では,例外が発生した命令実行の直後に,例外を ( プログラムまたはデバッガに ) 通知できないことがあります。したがって,デバッガは,実行の結果実際に例外を生成した命令よりあとの命令で実行を中断することがあります。
Alpha システムおよび Integrity システムでは,ユーザ・プログラムが独自のハンドラを定義しているフレームで,多くの RTL がジャケット RTL ハンドラを設定します。この RTL ジャケットは,設定,引数の操作を行い,ユーザが作成したハンドラにディスパッチします。例外を処理する場合,ジャケット RTL ハンドラが呼び出しスタック上のアドレスであるため,デバッガはそこにだけブレークポイントを設定できます。デバッガがジャケット RTL ハンドラでプログラムの実行を中止した場合には,通常,STEP/CALL コマンドを数回と STEP/INTO コマンドを実行してディスパッチ・ポイントを見つけることにより,ユーザ定義ハンドラに到達することができます。
フレーム・ベースのハンドラの詳細については, OpenVMS 呼び出し規則を参照してください。
ジャケット RTL ハンドラが,ALPHA LIBOTS など,インストールされている共用イメージの一部である場合には,デバッガはそこにブレークポイントを設定できません (プライベート・ユーザ・モード書き込みアクセスなし)。この場合には,次の例のように論理名によってすべての RTL をプライベート・イメージとして有効にしてください。
$DEFINE LIBOTS SYS$SHARE:LIBOTS.EXE; |
最後のセミコロン (;) は必ず指定してください。また,インストールされている共用 RTL は,すべてをプライベートで有効にするか,どれもプライベートで有効にしないかの,どちらかでなければなりません。 SHOW IMAGE/FULL データを使用してシステム空間のコード・セクションのイメージ・リストを認識してから,すべてのセクション用の論理名を定義し,デバッグ・セッションを再実行してください。
VAX プロセッサの場合に限り,命令コードを 1 つまたは複数個選択して指定できます。これによって,リスト内で指定した命令コードが実行されるたびに,デバッガがブレークします。
/INTO 修飾子と /OVER 修飾子も参照してください。
/BRANCH
/CALL
/INSTRUCTION
/LINE
これらの修飾子といっしょに使用すると,/INTO は,呼び出されたルーチン内 ( 実行が現在中断されているルーチン内だけでなく ) の指定された地点でデバッガがブレークします。 /INTO 修飾子は省略時の設定であり,/OVER の反対です。
/INTO を使用すると,/[NO]JSB,/[NO]SHARE,および /[NO]SYSTEM でブレーク・アクションをさらに修飾できます。
SET BREAK/MODIFY コマンドは,SET WATCH コマンドと全く同じように動作し,同じ制限事項が適用されます。
アドレス式に絶対アドレスを指定すると,デバッガがアドレスを特定のデータ・オブジェクトに関連づけることができない場合があります。この場合,デバッガは省略時の長さとして 4 バイトを使用します。ただし,この長さは,入力を WORD (SET TYPE WORD で省略時の長さを 2 バイトに変更する ) か BYTE (SET TYPE BYTE で省略時の長さを 1 バイトに変更する ) に設定すれば変更できます。SET TYPE LONGWORD を指定すると,省略時の長さは 4 バイトに戻ります。
/BRANCH
/CALL
/INSTRUCTION
/LINE
これらの修飾子といっしょに /OVER を使用すると, ( 呼び出されたルーチン内ではなく ) 現在実行を中断しているルーチン内だけの指定された地点でデバッガはブレークします。 /OVER 修飾子は,/INTO ( 省略時の設定 ) の反対です。
address-expression パラメータは,ルーチン内の命令アドレスです。単なるルーチン名の場合もあります。この場合は,ルーチンの開始アドレスを指定します。ただし,ルーチン内の別の記憶位置を指定することもできます。こうすると,特定のプログラム部分を実行したあとに行われる戻りだけを表示できます。
SET BREAK/RETURN コマンドで SET BREAK と同じアドレス式を指定すると,前回の SET BREAK は取り消されます。
/BRANCH
/CALL
/INSTRUCTION
/LINE
/SHARE 修飾子を使用すると,他のルーチンだけでなく共用可能イメージ・ルーチン内でもデバッガをブレークできます。 /NOSHARE 修飾子は,共用可能イメージ内でブレークポイントを設定しないことを指定します。
mask が指定されていない場合や,
mask = FFFFFFFFFFFFFFFF の場合には,オペレーティング・システムが任意の命令をエミュレートしたときに,デバッガはプログラムの実行を停止します。
/BRANCH
/CALL
/INSTRUCTION
/LINE
/SYSTEM 修飾子を指定すると,他のルーチンだけでなくシステム・ルーチン (P 1 空間 ) 内でもデバッガがブレークできます。 /NOSYSTEM 修飾子を指定すると,システム・ルーチン内ではブレークポイントが設定されません。
ブレークポイントが検出されると,デバッガは次のいずれかの動作を行います。
- ブレークポイント設定位置でプログラムの実行を中断する。
- ブレークポイントの設定時に /AFTER を指定した場合,AFTER 回数をチェックする。指定された回数に達していないと実行が再開され,デバッガは残りのステップを実行しない。
- ブレークポイントの設定時に WHEN 句を指定した場合, WHEN 句の式を評価する。式の値が偽であれば実行が再開され,デバッガは残りのステップに実行を移さない。
- /SILENT が指定されていない場合, "break..." メッセージを発行して,プログラム制御がブレークポイント設定位置にきたことを報告する。
- ブレークポイントの設定時に /NOSOURCE も /SILENT も指定しないか,または SET STEP NOSOURCE を入力していない場合,実行を中断したソース・コード行を表示する。
- ブレークポイントの設定時に DO 句を指定していれば,その DO 句内のコマンドを実行する。 DO 句に GO コマンドが含まれていれば実行を続行し,デバッガは次のステップに移らない。
- プロンプトを表示する。
プログラムの特定の記憶位置にブレークポイントを設定するには, SET BREAK コマンドでアドレス式を指定します。連続したソース行,命令クラス,またはイベントにブレークポイントを設定するには,SET BREAK コマンドで修飾子を指定します。通常はアドレス式か修飾子のどちらかを指定するだけでよく,両方を指定する必要はありません。ただし,/EVENT と /RETURN の場合は両方指定しなければなりません。
/LINE 修飾子は各ソース・コード行ごとにブレークポイントを設定します。
次の修飾子は命令クラスにブレークポイントを設定します。これらの修飾子と /LINE をいっしょに使用すると,デバッガはプログラムの実行中に各命令をトレースするので,実行速度が著しく遅くなります。
/BRANCH
/CALL
/INSTRUCTION
/RETURN次の修飾子は,ルーチンを呼び出したときに何が起こるかを決定します。
/INTO
/OVER
/[NO]SHARE
/[NO]SYSTEM次の修飾子は,ブレークポイントに達したときにどんな出力を表示するかを決定します。
/[NO]SILENT
/[NO]SOURCE次の修飾子は,ブレークポイントのタイミングと期間を決定します。
/AFTER:n
/TEMPORARYプログラム記憶位置の変更 ( 通常は変数値の変更 ) をモニタするには, /MODIFY 修飾子を使用します。
現在トレースポイントとして使用されている記憶位置をブレークポイントとして設定すると,トレースポイントは取り消されます。また,逆も同様です。
OpenVMS Alpha システムおよび Integrity システムの場合, SET BREAK/UNALIGNED_DATA コマンドは $START_ALIGN_FAULT_REPORTシステム・サービス・ルーチンを呼び出します。デバッグしているプログラムに,同じ $START_ALIGN_FAULT_REPORT ルーチンへの呼び出しがある場合は,このコマンドを実行しないでください。プログラムを呼び出す前にこのコマンドを実行すると,この呼び出しは異常終了します。このコマンドを実行する前にプログラムが呼び出されると,境界に合っていないデータに対するブレークは設定されません。
ブレークポイントには,ユーザが定義するものと定義済みのものとがあります。ユーザ定義のブレークポイントは,ユーザが SET BREAK コマンドで明示的に設定したブレークポイントです。定義済みのブレークポイントは,デバッグするプログラムの種類 (Ada あるいはマルチプロセスなど ) によって異なりますが,デバッガの起動時に自動的に設定されます。現在設定されているすべてのブレークポイントを表示するには, SHOW BREAK コマンドを使用します。定義済みのブレークポイントは定義済みのものとして表示されます。
ユーザ定義ブレークポイントと定義済みブレークポイントは,それぞれ別々に設定したり取り消したりします。たとえば,1 つの記憶位置またはイベントに,ユーザ定義ブレークポイントと定義済みブレークポイントの両方を設定することができます。ユーザ定義ブレークポイントを取り消しても,定義済みブレークポイントは影響を受けません。逆も同様です。
関連コマンド
(ACTIVATE,DEACTIVATE,SHOW,CANCEL) BREAK
CANCEL ALL
GO
(SET,SHOW) EVENT_FACILITY
SET STEP [NO]SOURCE
SET TRACE
SET WATCH
STEP
#1 |
---|
DBG> SET BREAK SWAP\%LINE 12 |
このコマンドの場合,SWAP モジュールの行 12 でデバッガがブレークします。
#2 |
---|
DBG> SET BREAK/AFTER:3 SUB2 |
このコマンドの場合,SUB2 ( ルーチン ) が 3 度目以降に実行されたときにデバッガがブレークします。
#3 |
---|
DBG> SET BREAK/NOSOURCE LOOP1 DO (EXAMINE D; STEP; EXAMINE Y; GO) |
このコマンドの場合,LOOP1 のアドレスでデバッガがブレークします。ブレークポイントでは,次のコマンドが順に実行されます。 (1) EXAMINE D,(2) STEP, (3) EXAMINE Y,(4) GO。 /NOSOURCE 修飾子を指定したので,ブレークポイントではソース・コードが表示されません。
#4 |
---|
DBG> SET BREAK ROUT3 WHEN (X > 4) DO (EXAMINE Y) |
このコマンドの場合,X が 4 より大きい場合に ROUT3 ルーチンでデバッガがブレークします。ブレークポイントでは,EXAMINE Y コマンドが実行されます。 WHEN 句の条件式の構文は,言語によって異なります。
#5 |
---|
DBG> SET BREAK/TEMPORARY 1440 DBG> SHOW BREAK breakpoint at 1440 [temporary] DBG> |
このコマンドの場合,メモリ・アドレス 1440 にブレークポイントが一時的に設定されます。検出されるとこのブレークポイントは無効になります。
#6 |
---|
DBG> SET BREAK/LINE |
このコマンドの場合,プログラムの実行中にソース行を検出するたびにその行の先頭でデバッガがブレークします。
#7 |
---|
DBG> SET BREAK/LINE WHEN (X .NE. 0) DBG> SET BREAK/INSTRUCTION WHEN (X .NE. 0) |
この 2 つのコマンドの場合,X が 0 でないときにデバッガがブレークします。最初のコマンドは,実行中に検出されたソース行の先頭で条件を満足しているかどうか調べます。 2 つ目のコマンドは,各命令で,条件を満足しているかどうかを調べます。 WHEN 句の条件式の構文は,言語によって異なります。
#8 |
---|
DBG> SET BREAK/LINE/INTO/NOSHARE/NOSYSTEM |
このコマンドの場合,各ソース行の先頭でデバッガがブレークします。この行には,呼び出されたルーチン (/INTO) 内の行を含み,共用可能イメージ・ルーチン (/NOSHARE) 内とシステム・ルーチン (/NOSYSTEM) 内の行は含まれません。
#9 |
---|
DBG> SET BREAK/RETURN ROUT4 |
このコマンドの場合,ROUT4 ルーチンの復帰命令を実行する直前にデバッガがブレークします。
#10 |
---|
DBG> SET BREAK/RETURN %LINE 14 |
このコマンドの場合,行 14 を含んでいるルーチンの復帰命令を実行する直前に,デバッガがブレークします。このコマンド書式は,ルーチン内で現在実行が中断しており,そのルーチンの復帰命令でブレークポイントを設定したい場合に便利です。
#11 |
---|
DBG> SET BREAK/EXCEPTION DO (SET MODULE/CALLS; SHOW CALLS) |
このコマンドの場合,例外がシグナル通知されるたびにデバッガがブレークします。このブレークポイントでは, SET MODULE/CALLS コマンドと SHOW CALLS コマンドが実行されます。
#12 |
---|
DBG> SET BREAK/EVENT=RUN RESERVE, %TASK 3 |
このコマンドは 2 つのブレークポイントを設定します。それぞれ RESERVE タスクとタスク 3(タスク ID=3) に関連しています。関連したタスクが RUN 状態に移行するたびに,各ブレークポイントが検出されます。
#13 |
---|
all> SET BREAK/ACTIVATING |
このコマンドの場合,マルチプロセス・プログラムのプロセスがデバッガの制御下に置かれるたびにデバッガがブレークします。
目次 | 索引 |
|