日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
ANALYZE/PROCESS_DUMP |
システム・コード・デバッガで解析するためにプロセス・ダンプをオープンします ( 保持デバッガのみ )。
ANALYZE/PROCESS_DUMP dumpfile
dumpfile
解析するプロセス・ダンプ・ファイルの名前。ファイル・タイプは .DMP でなければなりません。
/IMAGE_PATH=directory-spec
デバッガがデバッガ・シンボル・テーブル (DST) を含んでいるファイルを探すための検索パスを指定します。ファイルは,ダンプファイルと同じイメージ名を持ち,ファイル・タイプは .DSF または .EXE でなければなりません。たとえば,ダンプ・ファイルにイメージ名 foo.exe が含まれている場合,デバッガは foo.dsf または foo.exe を探します。
(保持デバッガのみ。) システム・コード・デバッガで解析するためにプロセス・ダンプをオープンします。修飾子 /PROCESS_DUMP は必須で,このコマンドをシステム・ダンプ・デバッガ (SDD) を起動するコマンド ANALYZE/CRASH_DUMP と区別する役割を果たしています。
修飾子 /IMAGE_PATH=directory-spec はオプションで,デバッガがデバッガ・シンボル・テーブル (DST) ファイルを探すために使用する検索パスを指定します。デバッガは保存済みプロセス・イメージ・リストからイメージ・リストを構築します。イメージを設定すると (メイン・イメージは自動的に設定されます),デバッガはそのイメージをオープンして DST を探します。
/IMAGE_PATH=directory-spec 修飾子を含めると,デバッガは指定されたディレクトリの中で .DST ファイルを探します。デバッガはまず directory-spec をディレクトリ検索リストの論理名として解釈しようとします。これに失敗すると,デバッガは directory-spec をディレクトリ指定として解釈し,そのディレクトリの中で,対応する .DSF または .EXE ファイルを探します。 .DSF ファイルは .EXE ファイルよりも優先されます。 .DSF または .EXE ファイルの名前は,イメージ名と一致していなければなりません。
/IMAGE_PATH=directory-spec 修飾子を含めなかった場合,デバッガは最初にダンプ・ファイルを含んでいるディレクトリの中で DST ファイルを探します。これに失敗すると,デバッガはまずディレクトリ SYS$SHARE を,次にディレクトリ SYS$MESSAGE を探します。デバッガがイメージの DST ファイルを発見できなかった場合,デバッガが使用できるシンボリック情報はグローバルおよびユニバーサル・シンボル名に限定されます。
デバッガは,ダンプ・ファイル・イメージと DST ファイルの間でリンクの日付と時刻が一致しているかどうかをチェックし,一致していなければ警告を発します。
パラメータ dumpfile は,解析するプロセス・ダンプ・ファイルの名前です。プロセス・ダンプ・ファイルのタイプは .DMP でなければならず, DST ファイルのタイプは .DSF または .EXE でなければなりません。
SCD の詳しい使い方については,『HP OpenVMS System Analysis Tools Manual』を参照してください。
関連コマンド
ANALYZE/CRASH_DUMP
CONNECT %NODE
SDA
#1 |
---|
DBG> ANALYZE/PROCESS/IMAGE_DUMP=my_disk$:[my_dir] my_disk$:[my_dir]wecrash.dmp %SYSTEM-F-IMGDMP, dynamic image dump signal at PC=001C0FA0B280099C, PS=001C003C break on unhandled exception preceding WECRASH\ th_run \%LINE 26412 in THREAD 8 26412: if (verify) { DBG> SET RADIX HEXADECIMAL; EXAMINE PC WECRASH\th_run\%PC: 0000000000030244 DBG> |
ATTACH |
端末の制御を現在のプロセスから他のプロセスに渡します。
注意
このコマンドは,デバッガへの HP DECwindows Motif for OpenVMS ユーザ・インタフェースでは使用できません。
ATTACH process-name
process-name
端末の接続先になるプロセスを指定します。指定するプロセスは,それに接続しようとする前に存在しているものでなければなりません。プロセス名に英数字以外の文字またはスペース文字が含まれている場合,その文字を二重引用符 (")で囲む必要があります。
ATTACH コマンドを使用すれば,デバッグ・セッションとコマンド・インタプリタの間または 2 つのデバッグ・セッションの間を行ったり来たりすることができます。このためには,まず SPAWN コマンドを使用してサブプロセスを作成しなければなりません。そのあとはいつでも望むときにそのサブプロセスに接続できます。システムのオーバヘッドを最小にして元のプロセスに戻るには,もう一度 ATTACH コマンドを使用します。関連コマンド
SPAWN
#1 |
---|
DBG> SPAWN $ ATTACH JONES %DEBUG-I-RETURNED, control returned to process JONES DBG> ATTACH JONES_1 $ |
この例では,一連のコマンドによりデバッガ (現在 JONES というプロセスで実行中) から JONES_1という名前のサブプロセスが作成され,作成されたサブプロセスに接続します。
#2 |
---|
DBG> ATTACH "Alpha One" $ |
この例は,スペース文字を含むプロセス名を二重引用符で囲む方法を示しています。
CALL |
プログラムにリンクされたルーチンを呼び出します。
CALL routine-name [(argument[,...])]
routine-name
呼び出し先のルーチンの名前またはメモリ・アドレスを指定します。argument
呼び出し先ルーチンが必要とする引数を指定します。引数は次に示すように,アドレス,ディスクリプタ,参照,値で渡すことができます。
/AST (省略時の設定)
/NOAST
呼び出し先ルーチンの実行時に非同期システム・トラップ (AST) の実行要求を許可するか禁止するかを制御します。/AST 修飾子を指定すると,呼び出し先ルーチンでの AST の実行要求は許可されます。/NOAST 修飾子を指定すると,呼び出し先ルーチンでの AST の実行要求は禁止されます。CALL コマンドで /AST と /NOAST のどちらも指定しないと,DISABLE AST コマンドを以前に入力していた場合を除き,AST の実行要求は許可されます。/SAVE_VECTOR_STATE
/NOSAVE_VECTOR_STATE (省略時の設定)
VAX のベクタ化されたプログラムに適用されます。ベクタ型プロセッサの現在の状態を保存したあと,CALL コマンドでルーチンを呼び出したときにその状態を復元するのかどうかを制御します。ベクタ型プロセッサの状態は次の情報で構成されます。
- ベクタ・レジスタ (V0 から V15) とベクタ制御レジスタ (VCR,VLR,VMR) の値
- 実行要求を保留にしている可能性のあるベクタ例外 (ベクタ命令の実行により引き起こされる例外)
ルーチンを実行するために CALL コマンドを使用すると,ルーチンの実行によって次のようにベクタ型プロセッサの状態が変わる可能性があります。
- ベクタ・レジスタまたはベクタ制御レジスタの値を変更する
- ベクタ例外を引き起こす
- CALL コマンドの実行時に保留中になっていたベクタ例外の実行要求を引き起こす
/SAVE_VECTOR_STATE 修飾子は呼び出し先ルーチンの実行が終了したあと, CALL コマンドの実行前に存在していたベクタ型プロセッサの状態を復元することをデバッガが指定します。これにより,呼び出し先ルーチンの実行が終了した後,次のことが保証されます。
- CALL コマンドの実行前に実行要求を保留していたベクタ例外はすべて実行要求を保留した状態のままになります。
- ルーチン呼び出し時に発生したベクタ例外は実行要求を保留した状態のままになりません。
- ベクタ・レジスタの値は CALL コマンドの実行前の値と同じになります。
/NOSAVE_VECTOR_STATE 修飾子 ( これが省略時の設定 ) は, CALL コマンドの実行前に存在していたベクタ型プロセッサの状態を,呼び出し先ルーチンの実行が終了したあと,復元しないことをデバッガが指定します。この場合,ルーチンの呼び出し後のベクタ型プロセッサの状態は,呼び出し先ルーチンによる作用があればそれによって決まります。
/[NO]SAVE_VECTOR_STATE 修飾子は汎用レジスタには全く影響しません。汎用レジスタの値は,CALL コマンドでルーチンが実行されると必ず保存され,復元されます。
CALL コマンドはプログラムを実行するために使用できる 4 つのデバッガ・コマンドのうちの 1 つです ( 他の 3 つは GO,STEP,EXIT)。 CALL コマンドを使用すれば,プログラムの通常の実行とは別にルーチンを実行できます。CALL コマンドは,ルーチンがプログラムにリンクされていたものであるかぎり,プログラムに実際にそのルーチンへの呼び出しがあるかないかにかかわらずそのルーチンを実行します。CALL コマンドを入力すると,デバッガは次の処理を行います。詳しい説明は,修飾子の説明を参照してください。
- 汎用レジスタの現在の値を保存します。
- 引数リストを構成します。
- コマンドで指定されたルーチンへの呼び出しを実行し,引数を引き渡します。
- ルーチンを実行します。
- 戻り状態レジスタ内のルーチンにより返される値を表示します。便宜上,呼び出し先ルーチンの実行後,R0 レジスタには関数戻り値 ( ルーチンが関数の場合 ) またはプロシージャ完了ステータス ( ルーチンが状態値を返すプロシージャの場合 ) が入ります。呼び出し先プロシージャが状態値も関数値も返さない場合には, R0 の値は意味がないことになり, "value returned" メッセージは無視してかまいません。
- 汎用レジスタの値を CALL コマンドの実行前の値に復元します。
- プロンプトを表示します。
デバッガは呼び出し先ルーチンがプロシージャ呼び出し規則 (『OpenVMS Calling Standard』を参照 ) に従っているものとみなします。ただし,デバッガはサポートされているあらゆる言語に対する引数の受け渡し方法全部についての知識を持っているわけではありません。したがって,パラメータの受け渡し方法,たとえば, CALL SUB1(X) ではなくCALL SUB1(%VAL X) を使用するなどを指定する必要があるかもしれません。ルーチンへ引数を引き渡す方法についての詳しい説明は,各言語のマニュアルを参照してくさい。
現在の言語が C または C++ の場合には,省略時の設定により, CALL コマンドは参照によってではなく,値によって引数を渡します。さらに,受け渡しメカニズム・レキシカル (%REF や %VAL など ) を使用せずに,次の引数を渡すことができます。
- ルーチンの参照
- 引用符で囲まれた文字列 (%REF 文字列として取り扱われる)
- 構造体,レコード,オブジェクト
- F 浮動小数点,D 浮動小数点,G 浮動小数点,S 浮動小数点パラメータと,その型の変数を逆参照することによる T 浮動小数点形式
ルーチンに読み込み専用 ではない パラメータが含まれている場合,パラメータに割り当てられている値は可視状態ではなく,値へのアクセスは確実ではありません。これは,デバッガが,プログラム引数ではなく内部引数リストのパラメータ値を調整するためです。値の変化を調べるには,パラメータの代わりに静的変数を使用してみてください。
CALL コマンドは,すべての浮動小数点リテラルを, Alpha システムでは F 浮動小数点形式に, Integrity では T 浮動小数点形式に変換します。
Alpha では,浮動小数点リテラルの引き渡しは, F 浮動小数点以外の形式ではサポートされていません (後述の例を参照)。
SET BREAK/EXCEPTION コマンドまたは STEP/EXCEPTION コマンドにより発生する例外ブレークポイントでの一般的なデバッグ方法は, CALL コマンドでダンプ・ルーチンを呼び出すことです。例外ブレークポイントで CALL コマンドを入力すると,呼び出し先ルーチンの中で以前に設定されていたブレークポイント,トレースポイントまたはウォッチポイントは,デバッガが例外コンテキストを失わないようにするために一時的に無効になります。ただし,例外ブレークポイント以外の位置で CALL コマンドを入力した場合には,このようなイベントポイントはアクティブになります。
例外ブレークポイントが検出されると,アプリケーションで宣言された条件ハンドラが起動される前に例外が中断されます。例外ブレークポイントでは,CALL コマンドでルーチンを実行したあとに GO コマンドまたは STEP コマンドを入力すると,デバッガが例外を再度シグナル通知します (GO コマンドと STEP コマンドを参照 )。
Alpha では,CALL コマンドで起動されたルーチンの 前に 起動されたルーチンはデバッグできません。たとえば,プログラムを MAIN ルーチンで終了し,ブレークポイントを SORT ルーチンに設定するとします。そこでデバッガ・コマンドの CALL SORT を実行します。 SORT ルーチンのデバッグ中は,MAIN ルーチンはデバッグできません。まず SORT ルーチンへの呼び出しから戻らなければなりません。
マルチプロセス・プログラムをデバッグしている場合,CALL コマンドは,現在のプロセス・セットのコンテキストで実行されます。また,マルチプロセス・プログラムをデバッグしているときには,実行がプロセスの中でどのように継続されるかは, SET MODE [NO]INTERRUPT コマンドや SET MODE [NO]WAIT コマンドを入力したかどうかによって決まります。省略時の設定 (SET MODE NOINTERRUPT) では,いずれかのプロセスが停止したときに,デバッガは他のプロセスに対して何もアクションをとりません。また,省略時の設定 (SET MODE WAIT) では,デバッガは,現在のプロセス・セット内のすべてのプロセスが停止するまで,次のコマンドの入力を受け付けません。詳細は,『HP OpenVMS デバッガ説明書』の第 15 章を参照してください。
関連コマンド
GO
EXIT
SET PROCESS
SET MODE [NO]INTERRUPT
SET VECTOR_MODE [NO]SYNCHRONIZED (VAX のみ)
STEP
SYNCHRONIZE VECTOR_MODE (VAX のみ)
#1 |
---|
DBG> CALL SUB1(X) value returned is 19 DBG> |
このコマンドは,パラメータ X を使用してサブルーチン SUB1 を呼び出します (省略時の設定により,X のアドレスが渡されます)。このルーチンは 19 という値を戻します。
#2 |
---|
DBG> CALL SUB(%REF 1) value returned is 1 DBG> |
この例は,数値リテラル 1 のある記憶位置へのポインタを SUB ルーチンに渡します。
#3 |
---|
DBG> SET MODULE SHARE$LIBRTL DBG> CALL LIB$SHOW_VM 1785 calls to LIB$GET_VM, 284 calls to LIB$FREE_VM, 122216 bytes still allocated, value returned is 00000001 DBG> |
この例は,( 共用可能イメージ LIBRTL の ) LIB$SHOW_VM 実行時ライブラリ・ルーチンを呼び出して,メモリ統計情報を表示しています。 SET MODULE コマンドは LIBRTL 内のユニバーサル・シンボル ( ルーチン名 ) をメイン・イメージの中で可視状態にします。詳しい説明は SHOW MODULE/SHARE コマンドを参照してください。
#4 |
---|
DBG> CALL testsub (%val 11.11, %val 22.22, %val 33.33) |
この例は,関数プロトタイプ void testsub (float, float,float)を持つ C サブルーチンを仮定した,値による浮動小数点パラメータの引き渡しています。浮動小数点パラメータは,F 浮動形式で渡されます。
#5 |
---|
SUBROUTINE CHECK_TEMP(TEMPERATURE,ERROR_MESSAGE) REAL TOLERANCE /4.7/ REAL TARGET_TEMP /92.0/ CHARACTER*(*) ERROR_MESSAGE IF (TEMPERATURE .GT. (TARGET_TEMP + TOLERANCE)) THEN TYPE *,'Input temperature out of range:',TEMPERATURE TYPE *,ERROR_MESSAGE ELSE TYPE *,'Input temperature in range:',TEMPERATURE END IF RETURN END DBG> CALL CHECK_TEMP(%REF 100.0, %DESCR 'TOLERANCE-CHECK 1 FAILED') Input temperature out of range: 100.0000 TOLERANCE-CHECK 1 FAILED value returned is 0 DBG> CALL CHECK_TEMP(%REF 95.2, %DESCR 'TOLERANCE-CHECK 2 FAILED') Input temperature in range: 95.2000 value returned is 0 DBG> |
この例のソース・コードは,2 つのパラメータ,TEMPERATURE ( 実数 ) と ERROR_MESSAGE ( 文字列 ) を受け付ける Fortran ルーチン (CHECK_TEMP) のソース・コードです。ルーチンは,温度の値によってさまざまな出力を表示します。2 つの CALL コマンドはそれぞれ参照で温度値とディスクリプタでエラー・メッセージを渡します。このルーチンには正式な戻り値がないため,返される値は未定義となり,この場合には 0 になります。
目次 | 索引 |
|