HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
EXAMINE コマンドにはデータを他の基数で表示できるようにするための基数修飾子が 4 つあります (/BINARY,/DECIMAL,/HEXADECIMAL,/OCTAL)。 SET RADIX コマンドと SET RADIX/OVERRIDE コマンドを使用して,省略時の基数を変更することもできます。
EXAMINE コマンドには,型修飾子と基数修飾子だけでなく,他の用途のための修飾子があります。
EXAMINE コマンドは現在の値の組み込みシンボル %CURLOC とピリオド (.) を指定されたアドレス式で示される記憶位置に設定します。論理的先行データ (%PREVLOC またはサーカンフレックス文字 (^) ) と論理的後続データ (%NEXTLOC) は現在の値に基づきます。
/VARIANT 修飾子は,デバッガが匿名バリアントを発見したときに,正しい項目を表示できるようにします。
C プログラムの共用体に含まれているメンバは,個々の時点でいずれか 1 つのみが有効となっています。共用体を表示するとき,デバッガはその時点でどのメンバが有効なのかを知りません。 PASCAL プログラムのバリアント部を含んでいるレコードでは,個々の時点でいずれか 1 つのバリアントのみが有効となっています。匿名バリアント部を含んでいるレコードを表示するとき,デバッガはその時点でどのバリアントが有効なのかはわからず,省略時の設定ではすべてのバリアントを表示します。
EXAMINE コマンドの /VARIANT 修飾子を使用すると,共用体 (C プログラム) または匿名バリアント (PASCAL プログラム) のどのメンバを表示するかを選択することができます。フォーマットは次のとおりです。
DBG> EXAMINE /VARIANT=variant-selector address-expression |
DBG> EXAMINE /VARIANT=(variant-selector,...) address-expression |
バリアント選択子の variant-selector は,名前,判別式 (PASCAL のみ),または位置を指定します。つまり,以下のいずれかになります。
/VARIANT 修飾子はゼロ個以上のバリアント選択子のリストを取ります。省略時の設定では,バリアント選択子なしの /VARIANT となり,すべての匿名バリアント・リストの最初のバリアントが表示されます。
個々のバリアント選択子は,表示するバリアントの名前,判別式,または位置を指定します。
デバッガはバリアント選択子を次のように使用します。
[Variant Record omitted - null or illegal Tag Value: 3]
|
name は名前文字列を指定します。名前がバリアントにマッチするのは,そのバリアントが name によって指定された名前のフィールドを含んでいる場合です。
判別式は,対象とするバリアント部のタグ型と互換性のある型の言語式を指定します。判別式がバリアントにマッチするのは,それがバリアントの case ラベル・リストの中の値に評価される場合です。C と C++ の共用体は判別式を持たないので,判別式は Pascal プログラムにのみ適用されます。
positional-selector は,バリアント・リストの中のバリアントの数を N として,1 から N までの整数に評価される言語式を指定します。 I に評価される positional-selector は,I 番目のバリアントを表示するように指定します。
アスタリスク (*) をワイルドカードとして使用すると,匿名バリアント・リストのすべてのバリアントにマッチします。
これらのバリアント選択子は,いずれもすべてのバリアントにマッチするような形で使用することができます。特に,以下に示すバリアント選択子は,最初の匿名バリアント・リストのすべてのバリアントを表示するよう指定します。
/VAR=D=* /VAR=N=* /VAR=P=* |
バリアント選択子そのものに,選択子のリストを含めることができます。たとえば,以下のコマンドはいずれも同じ意味を持ちます。
EXAMINE /VARIANT=(DIS=3,DIS=1,DIS=54) x EXAMINE /VARIANT=(DIS=(3,1,54)) x EXAMINE /VARIANT=DIS=(3,1,54) x |
値が単純な 10 進整数である場合には,1 つの判別式または位置の値を括弧なしで指定することができます。一般的な式を使って値を指定するときには,式を括弧で囲みます。以下のコマンドのリストでは,最初の 4 つのコマンドが有効であるのに対し,最後の 3 つのコマンドは無効です。
EXAMINE /VARIANT=POS=3 EXAMINE /VARIANT=POS=(3) ! parentheses unnecessary EXAMINE /VARIANT=(POS=(3)) ! parentheses unnecessary EXAMINE /VARIANT=(POS=3) ! parentheses unnecessary EXAMINE /VARIANT=(POS=foo) ! parentheses necessary EXAMINE /VARIANT=POS=(foo) ! parentheses necessary EXAMINE /VARIANT=(POS=3-1) ! parentheses necessary |
関連コマンド
CANCEL TYPE/OVERRIDE
DEPOSIT
DUMP
EVALUATE
SET MODE [NO]OPERANDS
SET MODE [NO]SYMBOLIC
(SET,SHOW,CANCEL) RADIX
(SET,SHOW) TYPE
| #1 |
|---|
DBG> EXAMINE COUNT SUB2\COUNT: 27 DBG> |
このコマンドはモジュール SUB2 の整数変数 COUNT の値を表示します。
| #2 |
|---|
DBG> EXAMINE PART_NUMBER INVENTORY\PART_NUMBER: "LP-3592.6-84" DBG> |
このコマンドは文字列変数 PART_NUMBER の値を表示します。
| #3 |
|---|
DBG> EXAMINE SUB1\ARR3 SUB1\ARR3 (1,1): 27.01000 (1,2): 31.01000 (1,3): 12.48000 (2,1): 15.08000 (2,2): 22.30000 (2,3): 18.73000 DBG> |
このコマンドはモジュール SUB1 の配列 ARR3 にあるすべての要素の値を表示します。ARR3 は,要素数が 2 x 3 個の実数配列です。
| #4 |
|---|
DBG> EXAMINE SUB1\ARR3(2,1:3) SUB1\ARR3 (2,1): 15.08000 (2,2): 22.30000 (2,3): 18.73000 DBG> |
このコマンドは,配列 SUB1\ARR3 の配列断面の要素の値を表示します。この配列断面には,"行" 2 の "列" 1 から 3 が含まれます。
| #5 |
|---|
DBG> EXAMINE VALVES.INTAKE.STATUS MONITOR\VALVES.INTAKE.STATUS: OFF DBG> |
このコマンドはモジュール MONITOR 内のネストされたレコードの構成要素 VALVES.INTAKE.STATUS の値を表示します。
| #6 |
|---|
DBG> EXAMINE/SOURCE SWAP
module MAIN
47: procedure SWAP(X,Y: in out INTEGER) is
DBG>
|
このコマンドはルーチン SWAP が宣言されているソース行 ( ルーチン SWAP の記憶位置 ) を表示します。
| #7 |
|---|
DBG> DEPOSIT/ASCII:7 WORK+20 = 'abcdefg' DBG> EXAMINE/ASCII:7 WORK+20 DETAT\WORK+20: "abcdefg" DBG> EXAMINE/ASCII:5 WORK+20 DETAT\WORK+20: "abcde" DBG> |
この例では,DEPOSIT コマンドは要素 'abcdefg' を 7 バイト長の ASCII 文字列としてシンボル WORK で示される記憶位置から 20 バイト先の記憶位置に格納します。最初の EXAMINE コマンドはその記憶位置にある要素の値を 7 バイト長の ASCII 文字列 (abcdefg) として表示します。 2 番目の EXAMINE コマンドはその記憶位置の要素の値を 5 バイト長の ASCII 文字列 (abced) として表示します。
| #8 |
|---|
DBG> EXAMINE/OPERANDS=FULL .0\%PC
X\X$START+0C: MOVL B^04(R4),R7
B^04(R4) R4 contains X\X$START\M (address 00001054),
B^04(00001054) evaluates to X\X$START\K
(address 00001058), which contains 00000016
R7 R7 contains 00000000
DBG>
|
VAX システムでは,このコマンドは現在の PC 値での命令 (MOVL) を表示します。/OPERANDS=FULL を使用すると,オペランド情報の最大レベルが表示されます。
| #9 |
|---|
DBG> SET RADIX HEXADECIMAL DBG> EVALUATE/ADDRESS WORKDATA 0000086F DBG> EXAMINE/SYMBOLIC 0000086F MOD3\WORKDATA: 03020100 DBG> EXAMINE/NOSYMBOLIC 0000086F 0000086F: 03020100 DBG> |
この例では,EVALUATE/ADDRESS コマンドは変数 WORKDATA のメモリ・アドレスが 16 進数の 0000086F であることを示します。 2 つの EXAMINE コマンドはアドレスを WORKDATA にシンボル化するかどうかを制御するために,/[NO]SYMBOLIC を使用してそのアドレスに含まれている値を表示します。
| #10 |
|---|
DBG> EXAMINE/HEX FIDBLK
FDEX1$MAIN\FIDBLK
(1): 00000008
(2): 00000100
(3): 000000AB
DBG>
|
このコマンドは 16 進基数で配列変数 FIDBLK の値を表示します。
| #11 |
|---|
DBG> EXAMINE/DECIMAL/WORD NEWDATA:NEWDATA+6 SUB2\NEWDATA: 256 SUB2\NEWDATA+2: 770 SUB2\NEWDATA+4: 1284 SUB2\NEWDATA+6: 1798 DBG> |
このコマンドは NEWDATA から NEWDATA + 6 バイトで示される記憶位置の範囲内にあるワード整数要素 (2 バイト要素) の値を 10 進基数で表示します。
| #12 |
|---|
DBG> EXAMINE/TASK SORT_INPUT MOD3\SORT_INPUT: %TASK 12 DBG> |
このコマンドは SORT_INPUT という名前のタスク・オブジェクトのタスク ID を表示します。
| #13 |
|---|
DBG> EXAMINE /VARIANT=(NAME=m,DIS=4,POS=1) x |
このコマンドは,最初に遭遇した匿名バリアント・リストについては "m" という名前のフィールドを含んでいるバリアント部を表示し, 2 番目の匿名バリアント・リストについては判別式の値が 4 の部分を表示し,3 番目の匿名バリアント・リストについては最初のバリアント部を表示します。
デバッグ・セッションを終了するか,またはマルチプロセス・プログラムの 1 つまたは複数のプロセスを終了し,アプリケーション宣言終了ハンドラを実行できるようにします。コマンド・プロシージャまたは DO 句の中で使用し,プロセスを全く指定しないと,その時点でそのコマンド・プロシージャまたは DO 句が終了されます。
EXIT [process-spec[,...]]
process-spec
現在デバッガの制御下にあるプロセスを指定します。次のいずれかの形式で指定します。
[%PROCESS_NAME] process-name スペースや小文字を含まないプロセス名。プロセス名にはワイルドカード文字 (*) を含めることができる。 [%PROCESS_NAME] " process-name" スペースまたは小文字を含むプロセス名。二重引用符 (") の代わりに,一重引用符を (') 使用することもできる。 %PROCESS_PID process_id プロセス識別子 (PID,16 進数)。 [%PROCESS_NUMBER] process-number
(または %PROC process-number)デバッガの制御下に入ったときにプロセスに割り当てられた番号。新しい番号は,1 から順番に各プロセスに割り当てられる。 EXIT コマンドまたは QUIT コマンドによってプロセスが終了した場合,そのデバッグ・セッション中にその番号が再割り当てされることがある。プロセス番号は SHOW PROCESS コマンドの実行で表示される。プロセスは,組み込みシンボル %PREVIOUS_PROCESS および %NEXT_PROCESS によってインデックスづけできるように,循環リスト内に順序づけされる。 process-set-name DEFINE/PROCESS_SET コマンドで定義された,プロセスのグループを表すシンボル。 %NEXT_PROCESS デバッガの循環プロセス・リスト中で可視プロセスの次のプロセス。 %PREVIOUS_PROCESS デバッガの循環プロセス・リスト中で可視プロセスの前のプロセス。 %VISIBLE_PROCESS シンボル,レジスタ値,ルーチン呼び出し,ブレークポイントなどの検索時に現在のコンテキストになっているスタック,レジスタ・セット,およびイメージを持つプロセス。
すべてのプロセスを指定するためにワイルドカード文字のアスタリスク (*) を使用することもできます。
EXIT コマンドはプログラムを実行するために使用できる 4 つのデバッガ・コマンドのうちの 1 つです ( 他の 3 つは CALL,GO,STEP です )。デバッグ・セッションを終了するには,パラメータを全く指定しないでデバッガ・プロンプトに対し EXIT コマンドを入力します。これによりセッションが順序正しく終了されます。つまり,プログラムのアプリケーション宣言終了ハンドラ ( もしあれば ) が実行され,次にデバッガの終了ハンドラが実行され ( ログ・ファイルをクローズし,画面とキーパッドの状態を復元するなど ),制御がコマンド・インタプリタに戻ります。そのあとは DCL コマンドの DEBUG や CONTINUE を入力してもプログラムのデバッグを続けることはできません ( デバッガを再起動する必要があります )。
EXIT は任意のアプリケーション宣言終了ハンドラを実行するので,該当する終了ハンドラにブレークポイントを設定することができます。設定したブレークポイントはEXIT と入力すると検出されます。したがって,EXIT を使用して終了ハンドラをデバッグできます。
アプリケーション宣言終了ハンドラを実行しないでデバッグ・セッションを終了するには,EXIT の代わりに QUIT コマンドを使用します。
コマンド・プロシージャや DO 句での EXIT コマンドの使用
デバッガがコマンド・プロシージャの中で ( パラメータを全く指定しないで ) EXIT コマンドを実行すると,制御はそのコマンド・プロシージャを起動したコマンド・ストリームに戻ります。コマンド・ストリームは,端末,外側 ( 当該コマンド・プロシージャを含んでいる側 ) のコマンド・プロシージャ,コマンドまたは画面表示定義での DO 句とすることができます。たとえば,コマンド・プロシージャが DO 句の中から起動された場合には,制御はその DO 句に戻り,そこでデバッガは ( コマンド・シーケンスの中にあれば ) 次のコマンドを実行します。
デバッガは,DO 句の中で ( パラメータを全く指定しないで ) EXIT コマンドを実行すると,その句にある残りのコマンドは無視し,プロンプトを表示します。
マルチプロセス・プログラムをデバッグする場合,EXIT コマンドを使用すればデバッグ・セッションを終了せずに,指定したプロセスを終了できます。プロンプトに対して EXIT コマンドを入力するか,それともコマンド・プロシージャまたは DO 句の中で EXIT コマンドを使用するかにかかわらず,同じ方法と動作が適用されます。
1 つまたは複数のプロセスを終了するには,それらのプロセスをパラメータとして指定して EXIT コマンドを入力します。この結果,指定されたプロセスのイメージが順序正しく終了され,それらのイメージに対応するアプリケーション宣言終了ハンドラが実行されます。その後は,指定したプロセスは SHOW PROCESS/ALL コマンドを実行しても表示されなくなります。SET PROCESS コマンドの結果,指定したプロセスの中に保留状態だったものがある場合,保留状態は無視されます。
指定したプロセスが終了処理を開始すると,保留されていない未指定のプロセスが実行を開始します。実行が開始されると,その実行がどのように継続されるかはユーザが SET MODE [NO]INTERRUPT コマンドを入力したかどうかによって異なります。省略時の設定 (SET MODE INTERRUPT) では,実行はプロセスのどれかで中断されるまで継続します。中断された時点で,イメージを実行していた他のどれかのプロセスで割り込みがかかり,デバッガが入力を促します。
アプリケーション宣言終了ハンドラを実行したり,別の方法で実行を開始したりしないで指定のプロセスを終了するには,EXIT コマンドではなく QUIT コマンドを使用します。
関連コマンド
DISCONNECT
@ (実行プロシージャ)
Ctrl/C
Ctrl/Y
Ctrl/Z
QUIT
RERUN
RUN
SET ABORT_KEY
SET MODE [NO]INTERRUPT
SET PROCESS
| #1 |
|---|
DBG> EXIT $ |
このコマンドはデバッグ・セッションを終了し,DCL レベルに戻ります。
| #2 |
|---|
all> EXIT %NEXT_PROCESS, JONES_3, %PROC 5 all> |
このコマンドを実行すると,マルチプロセス・プログラムの 3 つのプロセスが順序正しく終了します。つまり,プロセス・リスト内の可視プロセスの次のプロセス,プロセス JONES_3,プロセス 5 が終了します。指定されたプロセスが終了したあと,制御はデバッガに戻ります。
| 前へ | 次へ | 目次 | 索引 |