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


前へ 次へ 目次 索引



ACTIVATE WATCH

以前に設定したあと無効にしたウォッチポイントを有効にします。

形式

ACTIVATE WATCH [address-expression[,...]]


パラメータ

address-expression

有効にするウォッチポイントを指定します。高級言語を使用している場合,これは通常,変数の名前になります。ワイルドカード文字のアスタリスク(*)は使用できません。代わりに /ALL 修飾子を使用してください。/ALL を指定する場合は,アドレス式は指定できません。

修飾子

/ALL

すべてのウォッチポイントを有効にします。

説明

ウォッチポイントは SET WATCH コマンドで設定すると有効になります。DEACTIVATE WATCH で無効にした 1 つまたは複数のウォッチポイントを有効にするにはACTIVATE WATCH コマンドを使用します。

ウォッチポイントを有効にしたり無効にしたりすることにより,プログラムの実行や再実行のときに,ウォッチポイントを取り消して再設定する手間をかけずに,ウォッチポイントを使用したり使用しなかったりすることができます。

省略時の設定では,RERUN コマンドを実行すると,すべての静的ウォッチポイントの現在の状態(有効か無効か)が保存されます。特定の非静的ウォッチポイントは,(実行を再開する)メイン・プログラム・ユニットを基準にした,ウォッチの対象になっている変数の有効範囲によって保存されることもあり,保存されないこともあります。

ウォッチポイントが有効になっているかを確かめるには,SHOW WATCH コマンドを使用します。

関連コマンド

CANCEL ALL
RERUN
(SET,SHOW,CANCEL,DEACTIVATE)WATCH

#1

DBG> ACTIVATE WATCH SUB2\TOTAL

このコマンドはモジュール SUB2 の中の TOTAL 変数でのウォッチポイントを有効にします。

#2

DBG> ACTIVATE WATCH/ALL

このコマンドは設定したあと無効にしたすべてのウォッチポイントを有効にします。


ANALYZE/CRASH_DUMP

システム・ダンプ・デバッガで解析するためにシステム・ダンプをオープンします(保持デバッガのみ)。

形式

ANALYZE/CRASH_DUMP dumpfile


パラメータ

dumpfile

解析するシステム・ダンプ・ファイルの名前。ファイル・タイプは .DMP でなければなりません。

説明

システム・ダンプを解析するために OpenVMS Alpha システム・ダンプ・デバッガ(SDD)を起動します。

SDD は概念上はシステム・コード・デバッガ(SCD)に似ています。SCD では実行中のシステムに接続して,システムの実行を制御し,変数の確認と変更を行うことができますが,SDD ではシステム・ダンプに記録されているメモリを解析することができます。

SDD では一般に 2 つのシステムを使用しますが,必要な環境すべてを 1 つのシステム上に設定することも可能です。以下の説明では,2 つのシステムを使用するものと仮定しています。

SCD と同様に,OpenVMS デバッガのユーザ・インタフェースでは,ソース・コードに使われているのとまったく同じ変数名やルーチン名などを指定することができます。また,SDD は,システム・クラッシュの時点で実行されていたソース・コードの位置を表示することができます。

SDD は個々の言語の構文,データ型,演算子,式,有効範囲規則,およびその他の言語要素を認識します。コードまたはドライバが複数の言語で書かれている場合には,デバッグ・セッションの途中でデバッグ・コンテキストの言語を切り替えることが可能です。

SDD を使用するためには,以下の操作を行う必要があります。

サンプルの SDD セッションを含む SDD の詳しい使い方については,『OpenVMS Alpha System Analysis Tools Manual』を参照してください。

関連コマンド

ANALYZE/PROCESS_DUMP
CONNECT %NODE
SDA

#1

DBG> ANALYZE/CRASH_DUMP
DBG>

保持デバッガの中から SDD を起動します。


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 の詳しい使い方については,『OpenVMS Alpha 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 HEXEXADECIMAL; EXAMINE PC
WECRASH\th_run\%PC:     0000000000030244 
DBG>


ATTACH

端末の制御を現在のプロセスから他のプロセスに渡します。

注意

このコマンドは,デバッガへの Compaq 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

呼び出し先ルーチンが必要とする引数を指定します。引数は次に示すように,アドレス,ディスクリプタ,参照,値で渡すことができます。

%ADDR (C および C++ を除く,省略時の設定)引数をアドレスで渡します。形式は次のとおりです。
CALL routine-name (%ADDR address-expression)

デバッガはアドレス式を評価し,そのアドレスを指定されたルーチンに渡します。(X などの)単純な変数の場合,X のアドレスがルーチンに渡されます。この受け渡し方法は Fortran が ROUTINE(X)をインプリメントする方法です。つまり,命名された変数の場合,%ADDR の使用は Fortran での参照による呼び出しに対応します。ただし他の式の場合には,参照によって呼び出すには %REF 関数を使用しなければなりません。(配列,レコード,アクセス・タイプのように)複雑な変数または複合変数の場合,%ADDR を指定するとアドレスが渡されますが,呼び出されたルーチンは渡されたデータを正しく処理しない場合があります。% ADDR を使用するときは,リテラル値(数字または数字からなる式)は指定できません。

%DESCR 引数をディスクリプタ渡しします。形式は次のとおりです。
CALL routine-name (%DESCR language-expression)

デバッガは言語式を評価し,値を記述するための標準ディスクリプタを作成します。作成したディスクリプタが指定されたルーチンに渡されます。この方法は文字列を FORT RAN ルーチンに渡す場合などに使用できます。

%REF 引数を参照渡しします。形式は次のとおりです。
CALL routine-name (%REF language-expression)

デバッガは言語式を評価し,評価結果の値を指すポインタを呼び出し先ルーチンに渡します。この受け渡し方法は Fortran が式の結果を渡す方法に対応します。

%VAL (C および C++ の省略時の値)引数を値渡しします。形式は次のとおりです。
CALL routine-name (%VAL language-expression)

デバッガは言語式を評価し,値を呼び出し先ルーチンに直接渡します。


修飾子

/AST(省略時の設定)

/NOAST

呼び出し先ルーチンの実行時に非同期システム・トラップ(AST)の実行要求を許可するか禁止するかを制御します。/AST 修飾子を指定すると,呼び出し先ルーチンでの AST の実行要求は許可されます。/NOAST 修飾子を指定すると,呼び出し先ルーチンでの AST の実行要求は禁止されます。CALL コマンドで /AST と /NOAST のどちらも指定しないと,DISABLE AST コマンドを以前に入力していた場合を除き,AST の実行要求は許可されます。

/SAVE_VECTOR_STATE

/NOSAVE_VECTOR_STATE(省略時の設定)

VAX のベクタ化されたプログラムに適用されます。ベクタ型プロセッサの現在の状態を保存したあと,CALL コマンドでルーチンを呼び出したときにその状態を復元するのかどうかを制御します。

ベクタ型プロセッサの状態は次の情報で構成されます。

ルーチンを実行するために CALL コマンドを使用すると,ルーチンの実行によって次のようにベクタ型プロセッサの状態が変わる可能性があります。

/SAVE_VECTOR_STATE 修飾子は呼び出し先ルーチンの実行が終了したあと,CALL コマンドの実行前に存在していたベクタ型プロセッサの状態を復元することをデバッガが指定します。これにより,呼び出し先ルーチンの実行が終了した後,次のことが保証されます。

/NOSAVE_VECTOR_STATE 修飾子(これが省略時の設定)は,CALL コマンドの実行前に存在していたベクタ型プロセッサの状態を,呼び出し先ルーチンの実行が終了したあと,復元しないことをデバッガが指定します。この場合,ルーチンの呼び出し後のベクタ型プロセッサの状態は,呼び出し先ルーチンによる作用があればそれによって決まります。

/[NO]SAVE_VECTOR_STATE 修飾子は汎用レジスタにはまったく影響しません。汎用レジスタの値は,CALL コマンドでルーチンが実行されると必ず保存され,復元されます。


説明

CALL コマンドはプログラムを実行するために使用できる 4 つのデバッガ・コマンドのうちの 1 つです(他の 3 つは GO,STEP,EXIT)。CALL コマンドを使用すれば,プログラムの通常の実行とは別にルーチンを実行できます。CALL コマンドは,ルーチンがプログラムにリンクされていたものであるかぎり,プログラムに実際にそのルーチンへの呼び出しがあるかないかにかかわらずそのルーチンを実行します。

CALL コマンドを入力すると,デバッガは次の処理を行います。詳しい説明は,修飾子の説明を参照してください。

  1. 汎用レジスタの現在の値を保存します。

  2. 引数リストを構成します。

  3. コマンドで指定されたルーチンへの呼び出しを実行し,引数を引き渡します。

  4. ルーチンを実行します。

  5. R0 レジスタ内のルーチンにより返される値を表示します。便宜上,呼び出し先ルーチンの実行後,R0 レジスタには関数戻り値(ルーチンが関数の場合)またはプロシージャ完了ステータス(ルーチンが状態値を返すプロシージャの場合)が入ります。呼び出し先プロシージャが状態値も関数値も返さない場合には,R0 の値は意味がないことになり,"value returned" メッセージは無視してかまいません。

  6. 汎用レジスタの値を CALL コマンドの実行前の値に復元します。

  7. プロンプトを表示します。

デバッガは呼び出し先ルーチンがプロシージャ呼び出し標準(『OpenVMS Calling Standard』を参照)に従っているものとみなします。ただし,デバッガはサポートされているあらゆる言語に対する引数の受け渡し方法全部についての知識を持っているわけではありません。したがって,パラメータの受け渡し方法,たとえば,CALL SUB1(X)ではなくCALL SUB1(%VAL X)を使用するなどを指定する必要があるかもしれません。ルーチンへ引数を引き渡す方法についての詳しい説明は,各言語のマニュアルを参照してくさい。

現在の言語が C または C++ の場合には,省略時の設定により,CALL コマンドは参照によってではなく,値によって引数を渡します。さらに,受け渡しメカニズム・レキシカル(%REF や %VAL など)を使用せずに,次の引数を渡すことができます。

ルーチンに読み込み専用 ではない パラメータが含まれている場合,パラメータに割り当てられている値は可視状態ではなく,値へのアクセスは確実ではありません。これは,デバッガが,プログラム引き数ではなく内部引数リストのパラメータ値を調整するためです。値の変化を調べるには,パラメータの代わりに静的変数を使用してみてください。

浮動小数点パラメータは,F 浮動形式の値で渡すことができます。CALL コマンドは,浮動小数点値がF 浮動形式で渡されるとみなします。浮動少数点値の引き渡しは,F 浮動以外の形式ではサポートされていないため,予測できない結果になります(後述の例を参照)。

SET BREAK/EXCEPTION コマンドまたは STEP/EXCEPTION コマンドにより発生する例外ブレークポイントでの一般的なデバッグ方法は,CALL コマンドでダンプ・ルーチンを呼び出すことです。例外ブレークポイントで CALL コマンドを入力すると,呼び出し先ルーチンの中で以前に設定されていたブレークポイント,トレースポイントまたはウォッチポイントは,デバッガが例外コンテキストを失わないようにするために一時的に無効になります。ただし,例外ブレークポイント以外の位置で CALL コマンドを入力した場合には,このようなイベントポイントはアクティブになります。

例外ブレークポイントが検出されると,アプリケーションで宣言された条件ハンドラが起動される前に例外が中断されます。例外ブレークポイントでは,CALL コマンドでルーチンを実行したあとに GO コマンドまたは STEP コマンドを入力すると,デバッガが例外を再度シグナル通知します(GO コマンドと STEP コマンドを参照)。

Alpha プロセッサでは,CALL コマンドで起動されたルーチンの 前に 起動されたルーチンはデバッグできません。たとえば,プログラムを MAIN ルーチンで終了し,ブレークポイントを SORT ルーチンに設定するとします。そこでデバッガ・コマンドの CALL SORT を実行します。SORT ルーチンのデバッグ中は,MAIN ルーチンはデバッグできません。まず SORT ルーチンへの呼び出しから戻らなければなりません。

マルチプロセス・プログラムをデバッグするためにマルチプロセス・デバッグ構成を使用している場合(論理名 DBG$PROCESS の値が MULTIPROCESS の場合)には,CALL コマンドは可視プロセスのコンテキストで実行されますが,(SET PROCESS/HOLD コマンドによって)保留されていない他のプロセスのイメージも実行できます。CALL コマンドを 1 つまたは複数のプロセスにブロードキャストするために DO コマンドを使用すると,CALL コマンドは保留されていない指定された各プロセスのコンテキストで実行されますが,保留されていない他のプロセスのイメージも実行できます。どの場合も,可視プロセスの保留状態は無視されます。

マルチプロセス・プログラムをデバッグするためにマルチプロセス・デバッグ構成を使用している場合,実行がプロセスの中でどのように継続されるかは SET MODE [NO]INTERRUPT コマンドの入力の有無によって決まります。省略時の設定(SET MODE INTERRUPT)では,実行はプロセスのどれかで中断されるまで続きます。中断された時点で,イメージを実行していた他のプロセスで実行に割り込みがかかり,デバッガは入力を要求します。

関連コマンド

GO
EXIT
SET PROCESS
SET MODE [NO]INTERRUPT
SET VECTOR_MODE [NO]SYNCHRONIZED(VAX のみ)
STEP
SYNCHRONIZE VECTOR_MODE(VAX のみ)


前へ 次へ 目次 索引