日本-日本語

製品  >  ソフトウェア  >  OpenVMS  >  マニュアル

OpenVMS マニュアル


≫ 

OpenVMS V7.3-2
ライブラリ

タイトルページ
目次
まえがき
第 1 部:デバッガ概要
第 1 章:デバッガ概要
第 2 部:コマンド・インタフェース
第 2 章:デバッガの起動
第 3 章:プログラム実行の制御とモニタ
第 4 章:プログラム・データの検査と操作
第 5 章:プログラム内シンボルへのアクセス制御
第 6 章:ソース・コードの表示の制御
第 7 章:画面モード
第 3 部:DECwindows インタフェース
第 8 章:DECwindows Motifインタフェースの概要
第 9 章:デバッグ・セッションの開始と終了
第 10 章:デバッガの使用方法
第 4 部:PC クライアント・インタフェース
第 11 章:デバッガの PC クライアント/サーバ・インタフェースの概要
第 5 部:高度なトピック
第 12 章:ヒープ・アナライザの使用
第 13 章:その他の便利な機能
第 14 章:特殊なデバッグ
第 15 章:マルチプロセス・プログラムのデバッグ
第 16 章:ベクタ化されたプログラムのデバッグ
第 17 章:タスキング・プログラムのデバッグ
第 6 部:付録
付録 A :定義済みのキー機能
付録 B :組み込みシンボルと論理名
付録 C :各言語に対するデバッガ・サポートの要約
付録 D :EIGHTQUEENS.C
索引
PDF
OpenVMS ホーム

HP OpenVMS
デバッガ説明書


目次 索引



アドレス式で使用できるシンボルと演算子を次に示します。単項演算子のオペランドは 1 つです。二項演算子のオペランドは 2 つです。

シンボル 機能
%LABEL 後続の数値リテラルがプログラム・ラベル ( Fortran などのように数値のプログラム・ラベルを持っている言語の場合 ) であることを指定する。含んでいるモジュールを指定するパス名接頭識別子をラベルにつけることができる。
%LINE 後続の数値リテラルがプログラム内の行番号であることを指定する。含んでいるモジュールを指定するパス名接頭識別子を行番号につけることができる。
バックスラッシュ(\) パス名内で使用すると,パス名の各要素を区切る。この場合,完全パス名の一番左の要素がバックスラッシュであってはならない。

シンボルの接頭辞として使用する場合,シンボルをグローバル・シンボルと解釈することを指定する。この場合,バックスラッシュはシンボルの完全パス名の一番左の要素でなければならない。

アットマーク(@)
ピリオド(.)
単項演算子。アドレス式では,アットマーク(@) とピリオド (.) はどちらも "内容" 演算子として機能する。"内容"演算子を使用すると,そのオペランドはメモリ・アドレスと解釈され,そのアドレスの内容 ( そこにある値 ) を指す。
ビット・フィールド <p,s,e> 単項演算子。ビット・フィールド選択をアドレス式に適用できる。ビット・フィールドを選択するには,ビット・オフセット (p),ビット長(s),符号拡張ビット(e) を指定する ( 省略可能 )。
+ 記号(+) 単項演算子または二項演算子。単項演算子の場合,オペランドの値そのものを示す。二項演算子の場合,先行オペランドと後続オペランドの両方を加算する。
- 記号(-) 単項演算子または二項演算子。単項演算子の場合,オペランドの値の否定を示す。二項演算子の場合,先行オペランドから後続オペランドを減算する。
乗算記号(*) 二項演算子。先行オペランドに後続オペランドを掛ける。
除算記号(/) 二項演算子。先行オペランドを後続オペランドで割る。

次に,アドレス式での組み込みシンボルと演算子の使い方の例を示します。

%LINE 演算子と %LABEL 演算子

次のコマンドは,現在実行が中断しているモジュールの行 26 にトレースポイントを設定します。


DBG> SET TRACE %LINE 26

次のコマンドは,行 47 のソース行を表示します。


DBG> EXAMINE/SOURCE %LINE 47
module MAIN
    47:  procedure SWAP(X,Y: in out INTEGER) is
DBG>

次のコマンドは,MOD4 モジュールのラベル 10 にブレークポイントを設定します。


DBG> SET BREAK MOD4\%LABEL 10

パス名演算子

次のコマンドは,MOD4 モジュールの ROUT2 ルーチンで宣言された COUNT 変数の値を表示します。バックスラッシュ (\) パス名区切り文字でパス名要素を区切ります。


DBG> EXAMINE MOD4\ROUT2\COUNT
MOD4\ROUT2\COUNT: 12
DBG>

次のコマンドは,QUEUMAN モジュールの行 26 にブレークポイントを設定します。


DBG> SET BREAK QUEUMAN\%LINE 26

次のコマンドはグローバル・シンボル X の値を表示します。


DBG> EXAMINE \X

算術演算子

デバッガがアドレス式の要素を評価する順番は,ほとんどのプログラミング言語で使用される順番と似ています。この順番は,次の 3 つの要素によって決まります。優先順位が最も高いものから順に並んでいます。

  1. 演算子ごとにオペランドをまとめるために使用する区切り文字。通常は括弧または大括弧。

  2. 各演算子の相対優先順位。

  3. 演算子間の優先順位。左側の演算子ほど高い。

次にデバッガ演算子を,優先順位が最も高いものから順に示します。

  1. 単項演算子 (.,@,+,--)

  2. 乗算演算子と除算演算子 (*,/)

  3. 加算演算子と減算演算子 (+,--)

たとえば,次の式を評価する場合,デバッガはまず括弧内のオペランドを加算し,次にその結果を 4 で割り,次に 5 からその結果を引きます。


5--(T+5)/4 

次のコマンドは,メモリ記憶位置 X + 4 バイトに含まれている値を表示します。
X + 4 bytes:


DBG> EXAMINE X + 4

内容演算子

次に,内容演算子の使い方を示します。最初の例は,現在の PC 値が指す命令 ( アドレスが PC に含まれており,実行されようとしている命令 ) が得られます。


DBG> EXAMINE .%PC
MOD\%LINE 5: PUSHL   S^#8
DBG>

次の例では,呼び出しスタックの 1 レベル下にある PC 値が指すソース行が得られます ( SWAP ルーチンを呼び出したとき )。


DBG> EXAMINE/SOURCE .1\%PC
module MAIN 
MAIN\%LINE 134:     SWAP(X,Y);
DBG>

次の例では,ポインタ変数 PTR の値が 16 進数 7FF00000 であり,検査しようとしている要素のアドレスです。また,この要素の値は 16 進数の 3FF00000 です。次のコマンドは,この要素を検査する方法を示します。


DBG> EXAMINE/LONG .PTR
7FF00000: 3FF00000
DBG>

次の例では,内容演算子 ( アットマークまたはピリオド ) と現在の記憶位置演算子 ( ピリオド ) を使用して,3 つのクォドワード整数ポインタ変数がリンクされたリスト ( 次の図の L1,L2,L3 ) を検査します。P はリストの開始点へのポインタです。各ポインタ変数の上の方のロングワードには次の変数のアドレスが入り,下の方のロングワードには整数値 ( それぞれ 8,6,12 ) が入っています。



DBG> SET TYPE QUADWORD; SET RADIX HEX
DBG> EXAMINE .P             
! アドレスが P に入っている要素を 
                             ! 検査する。
00009BC2: 00000008 00009BDA  ! 高位のワードには値 8 が,低位のワードには 
                                 ! 次の要素のアドレス (9BDA) が入っている。 
DBG> EXAMINE @.             ! アドレスが現在の 
                             ! 要素に入っている要素を検査する。
00009BDA: 00000006 00009BF4  ! 高位のワードには値 6 が,低位のワードには 
                                 ! 次の要素のアドレス (9BF4) が入っている。 
DBG> EXAMINE ..             ! アドレスが現在の 
                             ! 要素に入っている要素を検査する。
00009BF4: 0000000C 00000000  ! 高位のワードには値 12 (10 進数) が,低位の 
                             ! ワードにはアドレス 0(リストの終わり) が入っている。

ビット・フィールド演算子

次の例は,ビット・フィールド演算子の使い方を示しています。たとえば,ビット 3 で始まり,長さが 4 ビット,符号拡張子がないアドレス式 X_NAME を検査するには,次のコマンドを入力します。


DBG> EXAMINE X_NAME <3,4,0>



B.3.8 例外情報の入手

次の組み込みシンボルを使用すると,現在の例外についての情報を入手したり,その情報を使用してブレークポイントまたはトレースポイントを修飾したりできます。

シンボル 機能
%EXC_FACILITY 現在の例外を発生させたファシリティの名前
%EXC_NAME 現在の例外の名前
%ADAEXC_NAME 現在の例外の Ada 例外名 (Ada プログラム専用)
%EXC_NUMBER 現在の例外の番号
%EXC_SEVERITY 現在の例外の重大度コード

次に例を示します。


DBG> EVALUATE %EXC_NAME
"FLTDIV_F"
DBG> SET BREAK/EXCEPTION WHEN (%EXC_NAME = "FLTDIV_F")
   .
   .
   .
DBG> EVALUATE %EXC_NUMBER
12
DBG> EVALUATE/CONDITION_VALUE %EXC_NUMBER
%SYSTEM-F-ACCVIO, access violation at PC !XL, virtual address !XL
DBG> SET BREAK/EXCEPTION WHEN (%EXC_NUMBER = 12)

WHEN 句の条件式は,言語によって異なります。

B.3.9 呼び出しスタック上の現在の有効範囲,次の有効範囲,前の有効範囲の指定

次の組み込みシンボルを使用すると,シンボル検索の有効範囲およびルーチン呼び出しスタックに関するソース表示と機械語命令ディスプレイの有効範囲を入手し,操作することができます。

組み込みシンボル 機能
%CURRENT_SCOPE_ENTRY ソース・コードまたはデコードした命令を表示するときか,シンボルを検索するときに,デバッガが参照用に現在使用している呼び出しフレーム。省略時の設定は,呼び出しフレーム 0 である。
%NEXT_SCOPE_ENTRY 呼び出しスタックで,%CURRENT_SCOPE_ENTRY が示す呼び出しフレームの下にある次の呼び出しフレーム。
%PREVIOUS_SCOPE_ENTRY 呼び出しスタックで, %CURRENT_SCOPE_ENTRY が示す呼び出しフレームの上にある次の呼び出しフレーム。

これらのシンボルは,呼び出しスタック上の呼び出しフレームを示す整数値を返します。呼び出しフレーム 0 は,スタックの一番上にあるルーチンを示します。ここで実行が中断されています。呼び出しフレーム 1 は呼び出しルーチンを示します。

たとえば,次のコマンドは,デバッガが呼び出しスタックの 1 つ下のルーチンが示す有効範囲で始まるシンボル ( 呼び出しスタックの一番上にあるルーチンから始まるのではない ) を検索することを指定します。


DBG> SET SCOPE/CURRENT %NEXT_SCOPE_ENTRY


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項