日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトルページ
目次
まえがき
第 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 章:タスキング・プログラムのデバッグ
第 6 部:付録
付録 A :定義済みのキー機能
付録 B :組み込みシンボルと論理名
付録 C :各言語に対するデバッガ・サポートの要約
付録 D :EIGHTQUEENS.C
索引
PDF
OpenVMS ホーム

HP OpenVMS
デバッガ説明書


目次 索引



ルーチン呼び出し文でプログラムの実行が一時停止したときは,「Step」ボタンをクリックすれば,通常,呼び出されるルーチン内の命令が 1 ステップ実行されます (そのときのコーディング方法によって異なる)。そしてデバッガは,呼び出されたルーチン内にはブレークポイントが設定されていないとみなし,実行を呼び出し元ルーチン内のその次のソース行で中断します。その結果,呼び出されるルーチン (そのうちのいくつかはシステム・ルーチンかライブラリ・ルーチンである) を最後までトレースで実行する必要がないので,コードを迅速にステップ実行できます。このことを,呼び出されるルーチンを1 ステップとして実行するといいます。

呼び出されるルーチン内の命令をステップ実行によって 1 行ずつ実行するには,次の手順に従ってください。

  1. ルーチン呼び出し文で実行を中断する。そのためには,たとえばブレークポイント( 第 10.4 節 を参照)を設定し,プッシュ・ボタン・ビューの「Go」ボタンをクリックする。

  2. 呼び出し文で実行が一時停止したら,プッシュ・ボタン・ビューの 「S/in」ボタンをクリックするか,DBG>プロンプトでSTEP/INTOと入力する。その結果,実行は呼び出されたルーチンの先頭を通過する。

呼び出されたルーチン内の命令が実行され始めたら,「Step」ボタンを使用してルーチンを 1 行ずつ実行します。

ルーチン呼び出し文で実行が一時停止していないときに「S/in」ボタンをクリックすると,「Step」ボタンのクリックと同じ働きをします。

10.3.5 呼び出されたルーチンからの戻り

呼び出されたルーチン内で実行が中断しているときは, プッシュ・ボタン・ビューの「S/ret」ボタンをクリックするか, DBG> プロンプトで STEP/RETURN コマンドを入力することにより,そのルーチンの最後まで直接実行できます。

デバッガは,そのルーチンの戻り命令実行の直前で中断します。その時点で,そのルーチンの呼び出しフレームは呼び出しスタックから削除されていないので,そのルーチンにローカルな変数の値を参照することなどができます。また次の Return 命令または Call 命令までプログラムを直接実行するときは,プッシュ・ボタンの S/call ボタンを使用 ( または DBG> プロンプトで STEP/CALL コマンドを入力 ) します。

「S/ret」ボタンは,システム・ルーチンやライブラリ・ルーチン内の命令を誤ってステップ実行した場合に特に役立ちます ( 第 10.1.3 項 を参照)。

10.4 ブレークポイントの設定による実行の中断

ブレークポイントとは,変数の値のチェックやルーチン内の命令のステップ実行などを行うために実行をやめる必要があるプログラム内の記憶位置のことです。

デバッガの HP DECwindows Motif for OpenVMS ユーザ・インタフェースでは,次の各箇所にブレークポイントを設定できます。

  • 指定のソース行

  • 指定のルーチン (関数,サブプログラムなど)

  • プログラムの実行中にシグナル通知される例外

  注意
PointerGrab または KeyboardGrab によって,マウス・ポインタを制御しているルーチン内のブレークポイントで停止すると,ワークステーションはハングします。

この問題を回避するには,2 つのワークステーションを使用してプログラムをデバッグします。詳細については, 第 9.8.3.1 項 を参照してください。

デバッガでは次の 2 種類のブレークポイントを設定できます。

  • 条件付きブレークポイント
    指定した関係式の評価が真のときにだけ検出される。

  • アクション・ブレークポイント
    このブレークポイントが検出されると,指定したシステム固有コマンドが 1 つまたは複数実行される。

条件付きブレークポイントであり同時にアクション・ブレークポイントでもあるブレークポイントを設定できます。

次の各項ではこれらのブレークポイント・オプションについて説明します。

10.4.1 ソース行へのブレークポイントの設定

ソース・ディスプレイのソース行のうち,その左にボタンがあるソース行には,ブレークポイントを設定できます。ボタンが表示されている行は,コンパイラが実行可能コードを生成した行 ( ルーチン宣言,代入文など ) です。

ソース行にブレークポイントを設定するには,次の手順に従ってください。

  1. ブレークポイントを設定するソース行を検索する ( 第 10.1 節 を参照 )。

  2. その行の左にあるボタンをクリックして選択する。ボタンが選択されるとブレークポイントが設定される。ブレークポイントは,ソース行の先頭,つまりそのソース行に対応する最初の機械語コード命令に設定される。

図 10-4 では,37行目の先頭にブレークポイントが設定されている。

図 10-4 ソース行へのブレークポイントの設定




ルーチンにブレークポイントを設定すれば,そのルーチンまで直接実行を進めてそのローカル環境を検査することができます。

ルーチンにブレークポイントを設定するには,次の手順に従ってください。

  1. メイン・ウィンドウの「File」メニューで「Browse Sources...」を選択する ( 図 10-2 を参照 )。「Source Browser」ダイアログ・ボックスに,実行可能なイメージおよびこれとリンクされたすべての共用可能イメージ ( たとえば,DEBUG および LIBRTL) の名前が表示される。実行可能なイメージは強調表示される。このイメージにシンボリック情報がない場合,リンクされたイメージの名前が薄く表示される。

  2. 実行可能なイメージの名前をダブル・クリックする。そのイメージ名の下にインデントされて,そのイメージ内の各モジュールの名前が表示される。

  3. 表示したいモジュールの名前をダブル・クリックする。モジュール名の下に,そのモジュール内のルーチンの名前が ( インデント付きで ) 表示される ( 図 10-5 を参照 )。

  4. ブレークポイントを設定するルーチンの名前をクリックする。 Set Breakpoint コマンドの結果が,コマンド・ビューのコマンド行にエコーバックされる。
    また別の方法として,ルーチン名をクリックした後,「Source Browser」ビューの「Set Breakpoint」ボタンをクリックする方法もある。この場合も,Set Breakpoint コマンドの結果が,コマンド・ビューのコマンド行にエコーバックされる。

図 10-5 ルーチンへのブレークポイントの設定




例外ブレークポイント を設定すると,例外がシグナル通知されたとき,ユーザ・プログラムによって宣言された例外ハンドラが実行される前に実行が中断されます。したがって例外ハンドラが使用できる場合は,その中の命令をステップ実行することにより,制御の流れをチェックできます。

例外ブレークポイントを設定するには,メイン・ウィンドウまたはオプション・ビュー・ウィンドウの「Break」メニューから「On Exception」を選択します。例外がシグナル通知されるたびに例外ブレークポイントが検出されます。

10.4.4 現在設定されているブレークポイントの識別

現在設定されているブレークポイントを次の3つの方法で知ることができます。

  • ブレークポイント・ボタンが塗りつぶされている行に注意しながら,ソース・コードをスクロールする。この方法では時間がかかり,しかも一度設定されたあとに無効にされたブレークポイントは表示されない ( 第 10.4.5 項 を参照 )。

  • メイン・ウィンドウまたはオプション・ビュー・ウィンドウの「Options」メニューで「Views...」を選択する。「Views」ダイアログ・ボックスが表示されたら,「Breakpoint View」をクリックしてブレークポイント・ビューを表示する ( 図 8-4 を参照)。
    ブレークポイント・ビューには,各ブレークポイントのモジュール名と行番号の一覧が表示される ( 第 10.1 節 を参照 )。表示された各ブレークポイントの隣にある塗りつぶされたボタンは,そのブレークポイントが有効なことを示す。塗りつぶされていないボタンは,そのブレークポイントが無効なことを示す。

  • コマンド・ビューの DGB> プロンプトで SHOW BREAK コマンドを入力する。デバッガには,現在設定されているすべてのブレークポイントがリストされ,条件ブレークポイントの場合のトリガ条件やアクション・ブレークポイントの場合に実行されるコマンドもあわせて表示される。



10.4.5 ブレークポイントの無効化,有効化,取り消し

ブレークポイントを設定すると,無効化,有効化または 削除を行うことができます。

無効にしたブレークポイントは,プログラムの実行中はデバッガによって無視されます。しかし,そのブレークポイントはブレークポイント・ビューに表示されているので,あとで,たとえばプログラムの再実行時などに有効にできます ( 第 9.3 節 を参照 )。次の点に注意してください。

  • 特定のブレークポイントを無効にするには,メイン・ウィンドウ内かブレークポイント・ビュー内のそのブレークポイントのボタンをクリアする。
    すべてのブレークポイントを無効にするには,「Break」メニューで「Deactivate All Breaks」を選択する。

  • ブレークポイント・ビューの場合,ブレークポイントが現在有効であれば,「Break」メニューの「Toggle」を選択することもできる。

あるブレークポイントを有効にすれば,そのブレークポイントはプログラムの実行中有効になります。

  • あるブレークポイントを有効にするには,メイン・ウィンドウ内かブレークポイント・ビュー内のそのブレークポイントのボタンを選択して塗りつぶす。
    ブレークポイント・ビューの場合,ブレークポイントが現在無効であれば,「Break」メニューの「Toggle」を選択することもできる。

  • すべてのブレークポイントを有効にするには,「Break」メニューで「Activate All」を選択する。

あるブレークポイントを取り消すと,そのブレークポイントはブレークポイント・ビューに表示されなくなり,あとでビューを使用して有効にできなくなります。 第 10.4.1 項第 10.4.2 項 の説明に従ってブレークポイントを再設定する必要があります。次の点に注意してください。

  • 特定のブレークポイントを削除するには,オプション・ビュー・ウィンドウの「Break」メニューで「Cancel」を選択する。

  • すべてのブレークポイントを削除するには,「Break」メニューの中から「Cancel All」を選択する。



10.4.6 条件付きブレークポイントの設定

条件付きブレークポイントで実行が中断されるのは,指定された式の評価が真のときだけです。たとえば,プログラム内のある変数の値が 4 のときにブレークポイントが有効になるように指定することができます。その変数の値が 4 でなければ,そのブレークポイントは無視されます。

プログラムの実行中にブレークポイントが検出されると,条件式が評価されます。

次の手順により,条件付きブレークポイントが設定されます。その場合,以前同じ場所にブレークポイントが設定されていたかどうかは関係ありません。

  1. 条件付きブレークポイントの設定先のソース行を表示する ( 第 10.1 節 を参照 )。

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

    • ソース行の左にあるボタン上で Ctrl/MB1 を押す。「Set/Modify Breakpoint」ダイアログ・ボックスが表示され,選択されているソース行が「Location:」フィールドに表示される ( 図 10-6 を参照 )。

    • 「Break」メニューから「Set」または「Set/Modify」を選択する。「Set/Modify Breakpoint」ダイアログ・ボックスが表示されたら,「Location:」フィールドにソース行を入力する。

  3. ダイアログ・ボックスの「Condition:」フィールドに関係式を入力する。その関係式は,ソース言語で有効なものでなければならない。たとえば, a[3] == 0 は C 言語で有効な関係式である。

  4. 「OK」をクリックする。条件付きブレークポイントが設定される。ブレークポイントのボタンの形が四角からダイヤに変わり,ブレークポイントが条件付きであることが示される。

図 10-6 条件付きブレークポイントの設定


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

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

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

    • 表示されているブレークポイントの左にあるボタン上で Ctrl/MB1 を押す。

    • ビューに表示されているブレークポイントをクリックしてから「Break」メニューで「Set/Modify」を選択する。

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



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

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

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

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

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

    • ソース行の左にあるボタン上で Ctrl/MB1 を押す。「Set/Modify Breakpoint」ダイアログ・ボックスが表示され,選択されているソース行が「Location:」フィールドに表示される ( 図 10-6 を参照 )。

    • 「Break」メニューで「Set」または「Set/Modify」を選択する。「Set/Modify Breakpoint」ダイアログ・ボックスが表示されたら,「Location:」フィールドにソース行を入力する。

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

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

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


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

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

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

    • 表示されているブレークポイントの左にあるボタン上で Ctrl/MB1 を押す。

    • ビューに表示されているブレークポイントをクリックしてから「Break」メニューで「Set/Modify」を選択する。

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



10.5 変数の検査と操作

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

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

  • 変数の値の表示

  • 変数のモニタ

  • 変数のウォッチ

  • 変数の値の変更

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

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

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

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

  • スカラ ( 非集合体 ) 変数,たとえば整数型,実数型,論理型,または列挙型の変数を指定するには,その変数の名前を選択する。

  • 集合体全体,たとえば配列や構造体 ( レコード ) を指定するには,その変数の名前を選択する。

  • 集合体変数の要素を指定するには,その言語の構文を使用してその要素を選択する。たとえば,次のとおりです。

    • 文字列 arr2[7]は,C 言語の配列 arr2 の要素 7 を指定する。

    • 文字列 employee.addressは,Pascal 言語のレコード ( 構造体 ) employee の構成要素 address を指定する。

  • ポインタ変数が示すオブジェクトを指定するには,その言語の構文に従ってその要素を選択する。たとえばC言語では,文字列 *int_pointは,ポインタ int_point によって示されるオブジェクトを指定する。

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

  • どのウィンドウの場合も,ブランクで区切られている文字列を選択するには, HP DECwindows Motif for OpenVMS の標準の単語選択方法 ( 目的の文字列にポインタを位置づけて MB1 をダブル・クリックする ) を使用する。

  • どのウィンドウの場合も,任意の文字列を選択するには, HP DECwindows Motif for OpenVMS の標準のテキスト選択方法 (1 文字目にポインタを位置づけ,MB1 を押したままそのポインタを文字列の最後までドラッグし,MB1 を離す ) を使用する。

  • デバッガのソース・ディスプレイの場合,言語依存のテキスト選択を行うこともできる。言語依存識別子の境界で区切られた文字列を選択するには,ポインタをその文字列に位置づけ,Ctrl/MB1 を押す。
    たとえば,ソース表示に文字列 arr2[m] が含まれている場合は,次のようにする。

    • arr2 を選択するには,ポインタを arr2 に位置づけ,Ctrl/MB1 を押す。

    • m を選択するには,ポインタを m に位置づけ,Ctrl/MB1 を押す。


    言語依存のテキスト選択のキー順序は, 第 10.10.4.2 項 の説明に従って変更できる。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.