前へ | 次へ | 目次 | 索引 |
アドレス式で使用できるシンボルと演算子を次に示します。単項演算子のオペランドは 1 つです。二項演算子のオペランドは 2 つです。
次に,アドレス式での組み込みシンボルと演算子の使い方の例を示します。
次のコマンドは,現在実行が中断しているモジュールの行 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 つの要素によって決まります。優先順位が最も高いものから順に並んでいます。
次にデバッガ演算子を,優先順位が最も高いものから順に示します。
たとえば,次の式を評価する場合,デバッガはまず括弧内のオペランドを加算し,次にその結果を 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> |
次の組み込みシンボルを使用すると,現在の例外についての情報を入手したり,その情報を使用してブレークポイントまたはトレースポイントを修飾したりできます。
シンボル | 機能 |
---|---|
%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 |
VAX プロセッサでは,次の各 Compq 言語で記述されたプログラムに対してデバッガを使用することができます。
Ada | BASIC | BLISS | C |
C++ | COBOL | DIBOL | Fortran |
MACRO-32 | Pascal | PL/I | RPG II |
SCAN |
Alpha プロセッサでは,次の各 Compaq 言語で記述されたプログラムに対してデバッガを使用することができます。
Ada | BASIC | BLISS | C |
C++ | COBOL | Fortran | MACRO-321 |
MACRO-64 | Pascal | PL/I |
デバッガは,各言語の構文,データ型,有効範囲規則を認識します。また,各言語の演算子および式の構文も認識します。したがって,デバッガ・コマンドを使用するときは,変数やその他のプログラム要素をプログラムのソース・コードに記述する場合と同じように指定することができます。また,その言語の構文を使用してソース言語の式の値を計算することもできます。
サポートされている言語のほとんどに共通するデバッグ方法については,マニュアルで説明しています。ヘルプ・トピックには各言語に固有の次の内容が含まれています。
言語固有のデバッガのサポートについての詳しい説明は,各言語とともに提供されるドキュメントを参照してください。
プログラムが複数の言語で記述されている場合,デバッグ・セッションの途中でデバッグ・コンテキストを 1 つの言語から別の言語へ変更することができます。選択する言語に対応したキーワードを指定して,SET LANGUAGE コマンドを使用してください。
VAX プロセッサでは,次のキーワードの 1 つを指定することができます。
ADA | BASIC | BLISS | C |
C++ | COBOL | DIBOL | FORTRAN |
MACRO | PASCAL | PLI | RPG |
SCAN | UNKNOWN |
Alpha プロセッサでは,次のキーワードの 1 つを指定することができます。
ADA | AMACRO | BASIC | BLISS |
C | C++ | COBOL | FORTRAN |
MACRO | MACRO64 | PASCAL | UNKNOWN |
サポートされていない言語で記述されたプログラムをデバッグするときは,SET LANGUAGE UNKNOWN コマンドを入力します。サポートされていない言語でのデバッガの使用性を最大限に高めるため,この設定によってデバッガはデータ形式と演算子のセットを幅広く受け入れるようになります。この中には,サポートされている言語のうち,2,3 の言語だけに固有のデータ形式と演算子も含まれます。言語が UNKNOWN に設定されているときにデバッガが認識する演算子と構造についての詳しい説明は,オンライン・ヘルプの Language_UNKNOWN を参照してください。
C.2 Ada
次の各サブトピックではデバッガによる Ada のサポートについて説明します。Ada のタスキング・プログラムに固有の情報については,第 17 章 も参照してください。
C.2.1 Adaの名前とシンボル
次の各サブトピックでは,デバッガがサポートしている Ada の名前,シンボル,および定義済みの属性について説明します。
名前の一部分は言語式(たとえば,'FIRST や 'POS といった属性)である場合があるので注意してください。このことは,EXAMINE,EVALUATE,DEPOSIT の各コマンドでこれらの名前を使用する方法に影響します。列挙型の例については,オンライン・ヘルプの Specifying_Attributes_with_Enumeration_Types を参照してください。
C.2.1.1 Adaの名前
サポートされている Ada の名前を次に示します。
名前の種類 | デバッガのサポート |
---|---|
レキシカル要素 |
Ada の識別子の構文規則を完全にサポートしている。
識別子ではなく演算子のシンボル(たとえば,+ や *)である関数の名前には,接頭辞 %NAME を付ける必要がある。また,演算子のシンボルは二重引用符で囲まなければならない。 数値リテラル,文字リテラル,文字列リテラル,予約語についての Ada の規則を完全にサポートしている。 -2147483648 から 2147483647 までの範囲で,符号付き整数リテラルを受け入れる。 コンテキストとアーキテクチュアに応じて浮動小数点数型を,F 浮動小数点数型,D 浮動小数点数型,G 浮動小数点数型,H 浮動小数点数型,S 浮動小数点型,または T 浮動小数点数型と解釈する。 |
添字付き要素 | 完全にサポートしている。 |
断面 | 断面全体,または断面の添字付き要素を確認および評価することができる。 断面の添字付き要素の格納だけができる。断面全体の格納はできない。 |
選択要素 | .all のall キーワードの使用も含めて,完全にサポートしている。 |
リテラル | null キーワードも含めて,完全にサポートしている。 |
ブール・シンボル | 完全にサポートしている(TRUE,FALSE)。 |
集合体 | EXAMINE コマンドでレコード全体および配列のオブジェクトを確認することができる。配列またはレコードの構成要素に値を格納することができる。文字列の値を格納する場合を除き,DEPOSIT コマンドで集合体を使用することはできない。 |
前へ | 次へ | 目次 | 索引 |