日本-日本語

製品  >  ソフトウェア  >  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
デバッガ説明書


目次 索引



C++ 言語では,シンボル名の大文字と小文字は区別され,それぞれ別個の文字として処理されます。

C.7.6 修飾子がついたクラス名

次の各項では,デバッガを使用するときのクラス・メンバの名前の作成方法を説明するために,修飾子がついたクラス名 という用語を使用します。あるクラスが別のクラスで定義されていなければ,修飾子がついたクラス名はそのクラス自身の名前にすぎません。しかし,もしこのクラスが別のクラス内でネストされていれば,そのネストのすぐ外のクラスの名前を前に付けなければなりません。このとき,区切り文字として一対のコロン (::) を使用します。外側のクラスもネストされている場合は,その名前も前に付けなければなりません。

適切な修飾子がついたクラス名の例を次に示します。


DBG> set break %name 'C::f'             ! f is a member of class C 
DBG> set break %name 'FOO::BAR::BAZ::g' ! g is a member of BAZ, 
                                        ! which is nested in BAR, 
                                        ! which is nested in FOO 



C.7.7 C++ のデータに対するデバッガの使用法

本項では,C++ のデータに対するデバッガの使用法を説明します。

本項では,静的とは宣言されていないデータ・メンバを参照する方法を説明します。

C.7.7.1.1 継承されないデータ・メンバ

C++ のクラスまたは struct か union で直接定義されている非静的データ・メンバを参照するには,その名前を,C 言語の struct メンバや union メンバの場合と同じように使用します。非静的データ・メンバ参照の正しい使用法を次の例で示します。


DBG> examine x.m, p->m 

C.7.7.1.2 継承されるデータ・メンバ

現在のところ,デバッガのサポートでは,各種の基底クラスから継承される非静的データ・メンバを区別するのに,メンバに至る継承パス,さらにメンバが宣言されているクラスに至る継承パス上の 重要な 基底クラス名をメンバ名の前に付けます。オブジェクトからメンバに至るパスの上の基底クラスが多重継承を使用して受け継がれたものなら,当基底クラスは重要です。したがって,2 つ以上の基底指定子が含まれている基底リストで基底クラスが言及されていれば,その基底クラスは重要です。

この表記法では,基底クラスに至る継承パスを記述するための必要最少限の数の基底クラス接頭辞を作成します。つまりこの表記法では,パスをたどっていくときに次に進む先を選ぶために必要な基底クラスだけを命名するからです。多重継承を行わないときは,参照は次の形式を取ります。


%name'CLASS::member' 

オブジェクトの基底クラスから継承された非静的データ・メンバを参照するには,%name で二重コロンで区切った一連の修飾子がついた重要な基底クラス名とメンバ名を引用符で囲みます。一連の重要な基底クラスを指定する順序は,オブジェクトの最も疎遠の重要クラスからオブジェクトに最も近い重要基底クラスへという順序です。たとえば,次の宣言の継承図式を考えてみましょう。


struct A { int a_member; }; 
struct B : A { int b_member; }; 
struct C { int c_member; }; 
struct D : B, C { int d_member; }; 
struct E : D { int e_member; }; 
struct F { int f_member; }; 
struct G : F { int g_member; }; 
struct H : E, G { int h_member; }; 
struct I : H { int i_member; }; 
struct J : I { int j_member; }; 
 
static J j_object; 

多重継承の行われる基底リストでクラス B,C,E,および G が言及されているので,これらのクラスは接頭辞として現れる重要クラスです。次の例は,デバッガの deposit コマンドですべてのメンバを参照しています。継承されたメンバが重要なクラスに属するかどうかに関係なく,そのメンバ自身のクラスはメンバ名の前に出現することに注意してください。

C.7.7.1.3 継承される仮想データ・メンバ

デバッガでは,仮想基底クラスのデータ・メンバへのシンボリック・アクセスは現在サポートされていません。ただし,例外がひとつあります。それは,__bptr という名前のポインタ・メンバがそのようなオブジェクトの中にあるということです。

静的データ・メンバを参照するには,%name で,その修飾子がついたクラス名,2 つのコロン (::),およびメンバ名を引用符で囲ます。

静的データ・メンバ参照の正しい使用法を次の例で示します。


DBG> examine %name 'C::s' 
DBG> examine %name 'FOO::BAR::BAZ::sdm' 



参照で宣言されたオブジェクトの値にアクセスするには,そのオブジェクトの名前を使用します。

デバッガは,参照型で宣言されたデータ・メンバをポインタ変数であるかのように扱います。したがって,そのメンバ名には間接参照演算子の *または ->を使用しなければなりません。

次に例を示します。


class C { 
public: 
    int &ref_mem; 
    C(int &arg) : ref_mem(arg) {} 
}; 
 
main() 
{ 
    auto int obj = 5; 
    auto int &ref_obj = obj; 
    auto C c(obj); 
    obj = 23; 
} 
...

メンバをチェックするためにデバッガを使用するための正しい方法を次のシーケンスで示します。


stepped on return from routine REF\main 
  to REF\main\%LINE 13+16 
    13: } 
DBG> examine obj, ref_obj 
REF\main\obj:   23 
REF\main\ref_obj:       23 
DBG> examine c 
REF\main\c 
    ref_mem:    2144211292 
DBG> symbolize c.ref_mem 
address 7FCE1154: 
    REF\main\c 
DBG> examine *c.ref_mem 
*REF\main\c.ref_mem:    23 



メンバを指すポインタであるオブジェクトは,64 ビットの整数で表されます。

オブジェクトやメンバの値を型でチェックし,表示するには, EXAMINE/TYPE というコマンドを使用します。同様に,DEPOSIT/TYPE というコマンドを使用することにより,指定した型に格納する式の値を修正できます。/TYPE 修飾子を使用する場合,これらのコマンドの構文は次のとおりです。


deposit/type=(name) 
examine/type=(name) 

name で示された型は,プログラムで宣言された変数の名前またはデータ型の名前でなければなりません。 /type修飾子は,特に 2 つ以上の型で宣言された C++ のオブジェクトを参照するときに役立ちます。

C.7.8 C++ の関数に対する OpenVMS デバッガの使用

本項では,各種の関数や関数の引数を参照する方法を説明します。

コードの中で関数のシンボリック名を見つけるには, SHOW SYMBOL コマンドを使用します。関数がオーバロードされている場合は,オーバロードされているシンボリック名を表示するために,名前の指定でワイルドカード文字 (*) を使用します。

次に例を示します。


class base 
  { 
  public: 
    base(); 
    base( int ); 
 
    ~base(); 
 
    int base_f1(); 
 
    void base_f2(); 
    void base_f2( int ); 
    void base_f2( char ); 
   }; 
 

オーバロードされている記号を表示し,適当な関数参照を決定する方法を次のシーケンスで示します。


DBG> set break %name 'base::base_f2' 
%DEBUG-E-NOTUNQOVR, symbol 'base::base_f2' is overloaded 
        use SHOW SYMBOL to find the unique symbol names 
DBG> show symbol *base_f2 
overloaded symbol CXX_T10_179\base::base_f2 
  overloaded instance CXX_T10_179\base::base_f2__1 
  overloaded instance CXX_T10_179\base::base_f2__2 
  overloaded instance CXX_T10_179\base::base_f2__3 
DBG> set break %name 'base::base_f2__2' 
DBG> step 
stepped to CXX_T10_179\main\%LINE 20 
    20:     x.base_f2(); 
DBG> step 
stepped to CXX_T10_179\main\%LINE 21 
    21:     x.base_f2(5); 
DBG> step 
break at routine CXX_T10_179\base::base_f2__2 
    12:     void base_f2( int ) {} 
DBG> step 
stepped to CXX_T10_179\main\%LINE 22 
    22:     x.base_f2('W'); 
stepped to CXX_T10_179\main\%LINE 22 
DBG> go 
'Normal successful completion' 
DBG> ^Z 



メンバ関数を参照するには,%name で,その修飾子がついているクラス名,2 つのコロン (::),およびメンバ関数の名前を引用符で囲みます。メンバ関数がオーバロードされている場合は,接尾辞 __ integer-number を付けます。

メンバ関数参照の正しい使用法を次の例で示します。


DBG> set break %name 'MYSTRING::length' 
DBG> set break %name 'MYCOMPLEX::format__1', %name 
      'MYCOMPLEX::format__2' 



コンストラクタを参照するには,その名前を使用します。コンストラクタがオーバロードされている場合は,接尾辞 __ integer-number を付けます。

コンストラクタ参照の正しい方法を次の例で示します。


DBG> set break FOO 
DBG> set break MYSTRING__1 



デストラクタを参照するには,%name で,その名前と共にチルド ( ~) を引用符で囲みます。

デコンストラクタ参照の正しい方法を次の例で示します。


DBG> set break %name '~FOO' 



クラス SRC から型 dest への変換を行うための演算子を参照するには, %name で SRC,2 つのコロン (::),それから dest を引用符で囲みます。

次の 1 組の名前から基本型が抽出されます。


void            char   signed_char   unsigned_char   signed_short 
unsigned_short  int    signed_int    unsigned_int    signed_long 
unsigned_long   float  double        long_double 

ポインタ型は (type)* と名付けられています。参照型は (type)& と名付けられています。struct,union class,および enum という型は,それぞれのタグで名付けられます。型の前には,修飾子 const および volatile が付き,修飾子と修飾子の間にはスペースが 1 文字入ります。次に例を示します。


DBG> set break %name 'C::int', %name 'C::(const S)&' 



次の演算子はユーザ定義関数によりオーバロードされることがあります。


+     -      *     /       %      ^      &      |      ~       ! 
=     <      >     +=      -=     *=     /=     %=     ^=      &= 
|=    <<     >>    >>=     <<=    ==     !=     <=     >=      && 
|     ++     --    ->*     ,      ->     []     ()     delete  new 

オーバロードされる演算子についての詳細は,C++ のマニュアルと共に提供される『The Annotated C++ Reference Manual』を参照してください。

そのようなユーザ定義関数を参照するには,ユーザ定義演算子がメンバ関数の場合は, %name で演算子文字を引用符で囲みます。通常の関数の場合と同じように,%name に続いて引用符付きで文字列,修飾子がついたクラス名,2 つのコロン (::) を指定します。同様に,関数がオーバロードされている場合は,接尾辞 __ integer_number を演算子文字に付けます。特に, +のような演算子が単項演算子や二項演算子として定義されている場合や, ++--が接頭辞として定義されている場合は,この接尾辞が必要です。

ユーザ定義関数参照の正しい使用法を次の例で示します。


DBG> set break %name 'MYSTRING::+' 
DBG> set break %name 'COUNTER::++__1', %name 'COUNTER::++__2' 



デバッガによる参照では, this*this,および this->を次のように使用します。

  • すべての非静的メンバ関数には thisと名付けられたポインタ・パラメータが利用できます。例を次に示します。


    DBG> examine this 
    

  • メンバ関数が呼び出された目的の接頭辞オブジェクトをチェックするには, *thisを使用します。例を次に示します。


    DBG> examine *this 
    

  • メンバ関数の接頭辞引数のデータ・メンバ mを参照するためにこのパラメータを使用します。例を次に示します。


    DBG> examine this->m 
    



C.8 COBOL

次の各サブトピックでは,デバッガによる COBOL のサポートについて説明します。

言語式でサポートされている COBOL の演算子を次に示します。

種類 シンボル 機能
接頭辞 + 単項正符号
接頭辞 - 単項負符号(否定)
挿入辞 + 加算
挿入辞 - 減算
挿入辞 * 乗算
挿入辞 / 除算
挿入辞 ** べき乗(VAX 固有)
挿入辞 = 等値
挿入辞 NOT = 不等
挿入辞 > 大なり
挿入辞 NOT < 以上
挿入辞 < 小なり
挿入辞 NOT > 以下
挿入辞 NOT 論理否定
挿入辞 AND 論理積
挿入辞 OR 論理和



C.8.2 言語式とアドレス式の構造

サポートされている COBOL の言語式とアドレス式の構造を次に示します。

シンボル 構造
( ) 添字指定
OF レコードの構成要素の選択
IN レコードの構成要素の選択



C.8.3 データ型

サポートされている COBOL のデータ型を次に示します。

COBOL のデータ型 VMS のデータ型名
COMP ロングワード整数 (L,LU)
COMP ワード整数 (W,WU)
COMP クォドワード整数 (Q,QU)
COMP-1 F 浮動小数点数(F)
COMP-1 (Alpha 固有) IEEE S 浮動小数点数(FS)
COMP-2 D 浮動小数点数(D)
COMP-2 (Alpha 固有) IEEE T 浮動小数点数(FT)
COMP-3 パック 10 進数(P)
INDEX ロングワード整数(L)
英数字 ASCII テキスト(T)
レコード (なし)
数値符号なし 数値文字列,符号なし (NU)
先行分離記号 数値文字列,左分離記号 (NL)
先行オーバパンチ記号 数値文字列,左オーバパンチされた記号 (NLO)
終了分離記号 数値文字列, 右分離記号 (NR)
後続オーバパンチ記号 数値文字列,右オーバパンチされた記号 (NRO)

COMP-1 型の浮動小数点数は,コンパイラのスイッチによって,F 浮動小数点数または IEEE S 浮動小数点数のどちらかで表現されます。

COMP-2 型の浮動小数点数は,コンパイラのスイッチによって,D 浮動小数点数または IE EE T 浮動小数点数のどちらかで表現されます。

C.8.4 ソース表示

デバッガは,COPY 文または COPY REPLACING 文でプログラムに取り込まれたソース・テキストを表示することができます。しかし,COPY REPLACING 文または REPLACE 文を使用した場合は,COPY REPLACING 文または REPLACE 文で作成された修正後のソース・テキストではなく,元のソース・テキストが表示されます。

デバッガは,REPORT 節のコードに対応する元のソース行を表示することはできません。REPORT に対応する DATA SECTION のソース行を見ることはできますが,レポートを作成するためのコンパイル済みコードに対応するソース行は表示されません。


目次 索引

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