日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトルページ
目次
まえがき
第1章:コマンド・ディクショナリ概要
第2章:デバッガ・コマンド・ディクショナリ
  ≫ コマンド一覧
索引
PDF
OpenVMS ホーム

HP OpenVMS
デバッガ・コマンド・ディクショナリ


目次 索引

Alpha では,例外が発生した命令実行の直後に,例外を ( プログラムまたはデバッガに ) 通知できないことがあります。したがって,デバッガは,実行の結果実際に例外を生成した命令よりあとの命令で実行を中断することがあります。

/HANDLER

デバッグしているプログラムに例外がある場合,デバッガは呼び出しスタックをスキャンし,設定されているフレーム・ベースの各ハンドラでブレークポイントを設定しようとします。デバッガは,標準の RTL ハンドラとユーザ設定ハンドラを区別しません。

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 データを使用してシステム空間のコード・セクションのイメージ・リストを認識してから,すべてのセクション用の論理名を定義し,デバッグ・セッションを再実行してください。

/INSTRUCTION



/INSTRUCTION[=(opcode[,...])]

命令コードを指定しないと,プログラム実行中に命令を検出するたびにデバッガがブレークします。

VAX プロセッサの場合に限り,命令コードを 1 つまたは複数個選択して指定できます。これによって,リスト内で指定した命令コードが実行されるたびに,デバッガがブレークします。

/INTO 修飾子と /OVER 修飾子も参照してください。

/INTO

省略時の設定。次の修飾子で設定されているブレークポイント ( すなわち,アドレス式が明示的に指定されていない場合 ) にだけ指定できます。
/BRANCH
/CALL
/INSTRUCTION
/LINE

これらの修飾子といっしょに使用すると,/INTO は,呼び出されたルーチン内 ( 実行が現在中断されているルーチン内だけでなく ) の指定された地点でデバッガがブレークします。 /INTO 修飾子は省略時の設定であり,/OVER の反対です。

/INTO を使用すると,/[NO]JSB,/[NO]SHARE,および /[NO]SYSTEM でブレーク・アクションをさらに修飾できます。

/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
/LINE

これらの修飾子といっしょに /OVER を使用すると, ( 呼び出されたルーチン内ではなく ) 現在実行を中断しているルーチン内だけの指定された地点でデバッガはブレークします。 /OVER 修飾子は,/INTO ( 省略時の設定 ) の反対です。

/RETURN

指定されたアドレス式 ( ルーチン名,行番号など ) に関連しているルーチンの復帰命令でデバッガがブレークします。復帰命令でブレークすると,ルーチンがアクティブである間ローカル環境を調べること ( たとえば,ローカル変数の値を得るなど ) ができます。ローカル環境のビューはアーキテクチャにより異なるので注意してください。

address-expression パラメータは,ルーチン内の命令アドレスです。単なるルーチン名の場合もあります。この場合は,ルーチンの開始アドレスを指定します。ただし,ルーチン内の別の記憶位置を指定することもできます。こうすると,特定のプログラム部分を実行したあとに行われる戻りだけを表示できます。

SET BREAK/RETURN コマンドで SET BREAK と同じアドレス式を指定すると,前回の SET BREAK は取り消されます。

/SHARE (省略時の設定)

/NOSHARE

/INTO を修飾します。 /INTO と次のいずれかの修飾子といっしょに使用します。
/BRANCH
/CALL
/INSTRUCTION
/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
/LINE

/SYSTEM 修飾子を指定すると,他のルーチンだけでなくシステム・ルーチン (P 1 空間 ) 内でもデバッガがブレークできます。 /NOSYSTEM 修飾子を指定すると,システム・ルーチン内ではブレークポイントが設定されません。

/TEMPORARY

ブレークポイントを検出したあとでブレークポイントを消去します ( ブレークポイントを一時的に設定するときに使用します )。

/TERMINATING

プロセスがイメージを終了したときにデバッガがブレークします。デバッガに制御が戻り,単一プロセス・プログラムまたはマルチプロセス・プログラムの最後のイメージが終了すると,そのプロンプトを表示します。イメージが $EXIT システム・サービスを実行し,その終了ハンドラがすべて実行されると,プロセスは終了します。 /ACTIVATING 修飾子も参照してください。

/UNALIGNED_DATA

(Alpha および Integrity のみ) 境界に合っていないデータにアクセスすると,その命令の直後 ( たとえば,ワード境界にないデータにアクセスするワード・ロード命令のあとで ) でデバッガがブレークします。

説明

ブレークポイントが検出されると,デバッガは次のいずれかの動作を行います。

  1. ブレークポイント設定位置でプログラムの実行を中断する。

  2. ブレークポイントの設定時に /AFTER を指定した場合,AFTER 回数をチェックする。指定された回数に達していないと実行が再開され,デバッガは残りのステップを実行しない。

  3. ブレークポイントの設定時に WHEN 句を指定した場合, WHEN 句の式を評価する。式の値が偽であれば実行が再開され,デバッガは残りのステップに実行を移さない。

  4. /SILENT が指定されていない場合, "break..." メッセージを発行して,プログラム制御がブレークポイント設定位置にきたことを報告する。

  5. ブレークポイントの設定時に /NOSOURCE も /SILENT も指定しないか,または SET STEP NOSOURCE を入力していない場合,実行を中断したソース・コード行を表示する。

  6. ブレークポイントの設定時に DO 句を指定していれば,その DO 句内のコマンドを実行する。 DO 句に GO コマンドが含まれていれば実行を続行し,デバッガは次のステップに移らない。

  7. プロンプトを表示する。

プログラムの特定の記憶位置にブレークポイントを設定するには, 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

このコマンドの場合,マルチプロセス・プログラムのプロセスがデバッガの制御下に置かれるたびにデバッガがブレークします。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.