Compaq OpenVMS
デバッガ説明書


前へ 次へ 目次 索引


10.4.7 アクション・ブレークポイントの設定

アクション・ブレークポイントが検出されると,実行は中断され,指定したコマンドの並びが実行されます。

アクション・ブレークポイントを設定するには,次の手順に従ってください。以前に同じ場所にブレークポイントが設定されていたかどうかは関係ありません。

  1. アクション・ブレークポイントの設定先のソース行を表示する ( 第 10.1 節 を参照 )。

  2. 次のいずれかを実行する。

  3. ダイアログ・ボックスの「Action:」フィールドに 1 つまたは複数のデバッガ・コマンドを入力する。たとえば,DEPOSIT x[j] = 3; STEP; EXAMINE a と入力する。

  4. 「OK」をクリックする。アクション・ブレークポイントが設定される ( 図 10-7 を参照 )。

図 10-7 アクション・ブレークポイントの設定


アクション・ブレークポイントを変更するには,次の手順に従ってください。この手順で,既存のアクション・ブレークポイントの位置や割り当てた条件を変更したり,無条件ブレークポイントをアクション・ブレークポイントに変更することができます。

  1. メイン・ウィンドウまたはオプション・ビュー・ウィンドウの「Options」メニューで「Views...」を選択し,「Views」ダイアログ・ボックスが表示されたら,「Breakpoint View」をクリックする。

  2. ブレークポイント・ビューで次のいずれかを実行する。

  3. 前の手順の 3 と 4 を実行し,適切な設定を行う。

10.5 変数の検査と操作

この節では,次の操作方法について説明します。

変数の操作全般については, 第 10.6 節 も参照してください。

10.5.1 ウィンドウでの変数名の選択

次の各項の操作では,次の方法でウィンドウから変数を選択します。例を 第 10.5.2 項 に示します。

名前を選択するときは,ソース・プログラミング言語の構文に従います。

ウィンドウ内の文字列は次のようにして選択します。

10.5.2 変数の現在値の表示

変数の現在値を表示するには,次の手順に従います。

  1. 第 10.5.1 項 の説明に従って,ウィンドウ内の変数名を検索し,選択する。

  2. プッシュ・ボタン・ビューの 「EX」ボタンをクリックする。コマンド・ビューに変数とその現在値が表示される。この値は現在の有効範囲内の変数の値であり,ユーザが変数を選択したソース記憶位置の値ではない。

図 10-8図 10-9 ,および 図 10-10 に整変数,配列集合体,および配列要素の表示方法をそれぞれ示します。

図 10-8 整変数の値の表示


図 10-9 配列集合体の値の表示


図 10-10 配列集合体の値の表示


現在値を別の型や基数で表示するには,次の手順に従ってください。

  1. 第 10.5.1 項 の説明に従って,ウィンドウ内で変数名を検索して選択する。

  2. メイン・ウィンドウの「Command」メニューで「Examine...」を選択する。「Examine」ダイアログ・ボックスが表示され,選択されている変数名が

    「Variable/Expression」フィールドに表示される。

  3. ダイアログ・ボックス内の「Typecast」メニューで「default」,「int」,「long」,「quad」,「short」,または「char*」のいずれかを選択する。

  4. ダイアログ・ボックス内の「Output Radix」メニューで「default」,「hex」,「octal」,「decimal」,または「binary」のいずれかを選択する。

  5. 「OK」をクリックする。

指定に応じて変更された値がコマンド・ビューに表示されます。

図 10-11 では,変数jがlongに型キャストされています。

図 10-11 変数値の型キャスト


10.5.3 変数の現在値の変更

変数の現在値を変更するには,次の手順に従ってください。

指定に応じた新しい値がコマンド・ビューに表示され,変数に代入されます。

図 10-12 では,変数safeの値を変更しています。

図 10-12 変数値の変更


10.5.4 変数のモニタ

変数をモニタする場合,デバッガはその値をモニタ・ビューに表示します。また,たとえば,ステップのあとやブレークポイントでプログラムからデバッガに制御が戻ると,表示されている値をチェックし,更新します。

注意

モニタできるのは,変数と,配列や構造体 (レコード) などの集合体だけです。複合式やメモリ・アドレスはモニタできません。

変数をモニタするには,次の手順に従ってください ( 図 10-13 を参照)。

  1. 第 10.5.1 項 の説明に従って,ウィンドウ内で変数名を検索し,選択する。

  2. プッシュ・ボタン・ビューの「MON」ボタンをクリックする。デバッガは次の表示を行う。

変数をモニタしているときに出力値を型キャストするには,「Monitor」メニューで「Typecast」を選択します。

モニタ中の変数の出力の基数は次の方法で変更できます。

モニタしている要素をモニタ・ビューから削除するには,「Monitor」メニューで「Remove」を選択します。

図 10-13 変数のモニタ


10.5.4.1 集合体 (配列または構造体) 変数のモニタ

配列や構造体 (レコード) などの集合体変数の名前を選択し,「MON」ボタンをクリックすると,モニタ・ビューの「Value/Deposit」欄に Aggregate という語が表示されます。集合体変数のすべての要素 (構成要素) の値を表示するには,「Monitor Expression」欄の変数名をダブル・クリックするか,または「Monitor」メニューで「Expand」を選択します。各要素の名前は,親の名前よりインデントされて表示されます ( 図 10-14 を参照)。ある要素が集合体の場合,その名前をダブル・クリックすればさらにその要素も表示されます。

図 10-14 モニタ・ビューに展開された集合体変数 (配列)


拡大された表示を元に戻して,集合体の親の名前だけをモニタ・ビューに表示するには,「Monitor Expression」欄の変数名をダブル・クリックするか,または「Monit or」メニューで「Collaspe」を選択します。

集合体変数の構成要素を選択した場合,その構成要素式自身が変数であれば,選択時にアクティブだった構成要素がモニタされます。たとえば,配列構成要素 arr[i] を選択した場合, i の現在値が 9 であれば,たとえ i の値があとで 10 に変わっても,arr[9] がモニタされます。

10.5.4.2 ポインタ (アクセス) 変数のモニタ

ポインタ (アクセス) 変数の名前を選択し「MON」ボタンをクリックすると,参照されたオブジェクトのアドレスがモニタ・ビューの「Value/Deposit」欄に表示されます ( 図 10-15 の最初のエントリを参照)。

参照されたオブジェクト値をモニタする (ポインタ変数を間接参照する) には,「Monitor Expression」欄のポインタ名をダブル・クリックします。この結果,モニタ・ビューではそのポインタ変数のエントリの下に,参照されたオブジェクトエントリがインデントされて表示されます ( 図 10-15 の一番下のエントリを参照)。参照されたオブジェクトが集合体の場合,その名前をダブル・クリックすればさらにその要素も表示されます。

図 10-15 モニタ・ビューでのポインタ変数と参照されたオブジェクト


10.5.5 変数のウォッチ

ウォッチされている変数の値がプログラムで変更されると,実行が中断しコマンド・ビューにその新旧の値が表示されます。

変数をウォッチする ( 変数へのウォッチポイントの設定 ) には,次の手順に従ってください。

図 10-16 モニタ・ビューでの変数のウォッチ


ウォッチポイントを無効にするには,モニタ・ビューの「Watched」ボタンをクリックしてクリアするか,または「Monitor」メニューで「Toggle Watchpoint」を選択します。ウォッチポイントを有効にするには,目的の「Watched」ボタンをクリックして塗りつぶすか,または「Monitor」メニューで「Toggle Watchpoint」を選択します。

静的変数と非静的 ( 自動 ) 変数,およびこれらの変数へのアクセス方法については, 第 10.6.1 項 を参照してください。変数の定義元ルーチンから実行の制御が移る ( 戻る ) と,非静的ウォッチポイントは無効になります。非静的変数がアクティブでなくなると,モニタ・ビューではそのエントリが薄く表示され,その「Watched」ボタンはクリアされます。

変数の定義元ルーチンに実行の制御が後で戻る場合,非静的ウォッチポイントが自動的に再び有効になることはありません。非静的ウォッチポイントは,ユーザが自分で明示的に,有効にしなければなりません。

10.5.6 モニタされたスカラ型変数の値の変更

スカラ ( 非集合体 ) 型変数,たとえば整数型や論理型の値を変更するには,次の手順に従ってください ( 図 10-17 を参照) 。

  1. 第 10.5.4 項 の説明に従って変数をモニタする。

  2. モニタ・ビューの「Value/Deposit」欄の変数値をクリックする。その値の上に小さな編集可能ダイアログ・ボックスが表示される。

  3. そのダイアログ・ボックスに新しい値を入力する。

  4. そのダイアログ・ボックスのチェック・マーク (OK) をクリックする。ダイアログ・ボックスが消えて新しい値が表示され,変数がその値になったことが示される。その変数の型,範囲などに合わない値を入力しようとすると注意が表示される。

図 10-17 モニタされたスカラ型変数の値の変更


値の入力を中止してダイアログ・ボックスを消すには,X ( 取り消し )をクリックします。

集合体型変数 (たとえば配列や構造体) は一度に 1 つの構成要素の値を変更できます。集合体型変数の構成要素の値を変更するには,次の手順に従ってください( 図 10-18 を参照)。

  1. 第 10.5.4.1 項 の説明に従って構成要素の値を表示する。

  2. スカラ型変数の値の変更手順に従う。

図 10-18 集合体型変数の構成要素の値の変更


10.6 プログラム変数へのアクセス

この節では,デバッグ時にプログラム変数にアクセスするときの一般的な関連事項について説明します。

コンパイル時にプログラムを最適化すると,デバッグ時に特定の変数にアクセスできなくなります。デバッグ対象のプログラムをコンパイルするときは,できるだけ最適化しないようにしてください ( 第 1.2 節 を参照)。

変数の値をチェックする前に,その変数が宣言され初期化される箇所の先まで必ずそのプログラムを実行します。初期化されていない変数内の値は,不当であると考えられます。

10.6.1 静的変数と非静的 (自動) 変数へのアクセス

注意

ここでは総称して「非静的変数」という用語を使用しますが,言語によっては自動変数と呼ぶ場合もあります。

静的変数には,プログラムの実行中は同じメモリ・アドレスが割り当てられます。静的変数にはいつでもアクセスできます。

非静的変数はスタックかレジスタに割り当てられ,その定義元ルーチンかブロックが呼び出しスタック上でアクティブな場合にだけ値を持ちます。したがって,非静的変数にアクセスできるのは,その定義元ルーチンかブロック ( 定義元ルーチンから呼び出されたルーチンを含む ) の有効範囲内でプログラムの実行が一時停止しているときだけです。

通常,非静的変数にアクセスするには,定義元にまずブレークポイントを設定してから,そのブレークポイントまでプログラムを実行します。

ユーザ・プログラムの実行によって非静的変数がアクセスできなくなると,次のような通知がなされます。


前へ 次へ 目次 索引