日本-日本語
日本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
デバッガ説明書


目次 索引

第 9 章
デバッグ・セッションの開始と終了

本章では次の方法について説明します。

  • デバッガの起動 ( 第 9.1 節 )

  • プログラムの実行終了後のデバッグの続行 ( 第 9.2 節 )

  • 現在のデバッグ・セッションからの同一プログラムの再実行 ( 第 9.3 節 )

  • 現在のデバッグ・セッションからの別のプログラムの実行 ( 第 9.4 節 )

  • プログラムの実行に対する割り込みおよびデバッガ動作の強制終了 ( 第 9.6 節 )

  • デバッグ・セッションの終了 ( 第 9.7 節 )

  • 特定の用途の追加オプションによるデバッガの起動 ( 第 9.8 節 )

  • サブプロセスまたは独立プロセスとしてすでに動作中のプログラムのデバッグ ( 第 9.5 節 )



9.1 保持デバッガの起動

この節では,DCL レベル ($) からデバッガを起動して,ユーザのプログラムをデバッガの制御下に置く一般的な方法について説明します。オプションの起動方法については, 第 9.8 節 を参照してください。

ここで説明している方法に従って,保持デバッガでデバッガを起動すると, Connect ( 第 9.5 節 を参照), Rerun ( 第 9.3 節 を参照 ),および Run ( 第 9.4 節 を参照 ) の機能を使用できるようになります。

デバッガを起動してプログラムをデバッガの制御下に置くには,次のようにします。

  1. 第 1.2 節 で説明したとおりにプログラムをコンパイルおよびリンクしてあることを確認する。

  2. 次のコマンド行を入力する。

    $  DEBUG/KEEP 
    


    省略時の設定では, 図 9-1 のようにデバッガが起動します。プログラムをデバッガの制御下に置く ( 手順 4) までメイン・ウィンドウは空のままです。デバッガの起動時にはユーザ定義初期化ファイルが実行されます ( 第 13.2 節 を参照 )。

    図 9-1 起動時のデバッガ


  3. 次の 3 つのいずれかの方法を使用して,プログラムをデバッガの制御下に置く。

    • プログラムがサブプロセスまたは独立プロセスとしてすでに実行されている場合, CONNECT コマンドを使用してプログラムをデバッガの制御下に置きます。 第 9.5 節 を参照してください。

    • 指定のイメージの実行(最も一般的な方法)

      1. メイン・ウィンドウの「File」メニューから「Run Image...」を選択する。「Run Image」ダイアログ・ボックスが現れ,ユーザのカレント・ディレクトリにある実行可能なイメージの一覧が表示される ( 図 9-2 を参照 )。

      2. デバッグするイメージの名前をクリックして選択する。「Image:」フィールドにそのイメージ名が表示される。

      3. プログラムに渡す引数がある場合は,「Arguments:」フィールドに入力する。デバッガは文字列の解析時に引用符を取り除くので,引用符付きの文字列の場合は二重引用符を追加しなければならない。

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

      図 9-2 イメージの指定によるプログラムの実行


    • DCL コマンドまたはフォーリン・コマンドのシンボルの指定によるイメージの実行

      1. メイン・ウィンドウの「File」メニューから「Run Foreign Command...」を選択する。「Run Foreign Command...」ダイアログ・ボックスが表示される ( 図 9-3 を参照 )。

      2. 「Foreign Command:」フィールドにコマンドを入力する。このようなシンボルにより,ディレクトリ選択およびファイル選択のプロセスでショートカットを使用できるようになる。図 2-3 に表示されているフォーリン・コマンド X1 は,すでに次のように定義されている。

        $X1 :== RUN MYDISK:[MYDIR.MYSUBDIR]EIGHTQUEENS.EXE 
        

      3. コマンドに付けて渡す引数を「Arguments:」フィールドに入力する。

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

図 9-3 コマンド・シンボルの指定によるプログラムの実行


デバッガが,プログラムを制御できるようになると,デバッガは次の動作を行います。

  • 図 9-4 に示すように,メイン・ウィンドウにプログラムのソース・コードを表示する。

  • メイン・プログラムの先頭で実行を中断する。ソース・コードの左にある現在位置ポインタが指している行は,次に実行されるコードを表す。

図 9-4 起動時のソース・ディスプレイ


コマンド・ビューに表示されたメッセージは,このデバッグ・セッションが C プログラム用に初期化されており,ソース・モジュールの名前が EIGHTQUEENS であることを示しています。

ある種のプログラムでは,メイン・プログラムの前に,初期化コードの先頭でプログラムの実行が中断されるよう一時的なブレークポイントが設定され,次のメッセージが表示されます。

Type GO to reach MAIN program
No source line for address: nnnnnnnn

いくつかのプログラム ( たとえば Ada) では,完全シンボル情報を使用して,ブレークポイントで初期化コードをデバッグすることができます。初期化を行うと,言語別のデバッガ・パラメータが設定されます。これらのパラメータは,デバッガが名前や式を解析する方法,デバッガが出力する形式などを制御します。

これにより, 第 10 章 の方法を使用してプログラムをデバッグできるようになります。

デバッガの制御下でのプログラムの実行については,次の制限事項に注意してください。

  • 実行中のプログラムにデバッガを接続するために,この節で示した手順を使用することはできない ( 第 9.8.2 項 を参照 )。

  • ネットワーク・リンクを通じて,デバッガの制御下でプログラムを実行するには,デバッガ・クライアント/サーバ・インタフェースを使用しなければならない。詳細は 第 9.9 節 を参照。

存在しないプログラムを実行しようとしたり,存在するプログラムの名前の綴りを誤って入力すると,次のエラー・メッセージがコマンド・ビューではなく,DECterm ウィンドウに表示されます。

%DCL-W-ACTIMAGE, error activating image 
-CLI-E-IMAGEFNF, image file not found 



9.2 プログラムの実行の終了

1 つのデバッグ・セッションの中でプログラムの実行が正常に終了すると,次のメッセージが発行されます。

このときユーザには次のオプションが与えられます。

  • 同じデバッグ・セッションからプログラムを再実行することができる ( 第 9.3 節 を参照 )。

  • 同じデバッグ・セッションから別のプログラムを実行することができる ( 第 9.4 節 を参照 )。

  • デバッグ・セッションを終了することができる ( 第 9.7 節 を参照 )。



9.3 現在のデバッグ・セッションからの同一プログラムの再実行

保持デバッガでデバッガを実行する場合 ( 第 9.1 節 を参照 ),デバッグ・セッションを実行している間ならいつでも,現在デバッガによって制御されているプログラムを再実行できます。

プログラムを再実行するには,次の手順に従ってください。

  1. メイン・ウィンドウ「File」メニューから「Rerun Same...」を選択する。「Rerun」ダイアログ・ボックスが表示される ( 図 9-5 を参照)。

  2. プログラムに渡す適当な引数が必要な場合は,「Arguments:」フィールドに入力する。デバッガは文字列の解析時に引用符を取り除くので,引用符付きの文字列の場合は二重引用符を追加しなければならない。

  3. 以前に設定したか,有効または無効にしたブレークポイント,トレースポイント,または静的ウォッチポイントの現在の状態を保存するか保存しないかを選択する ( 第 10.4 節 および 第 10.5.5 項 を参照)。非静的ウォッチポイントが保存されるか保存されないかは,ウォッチされる変数の有効範囲に応じて,実行の再開地点のメイン・プログラム・ユニットとの関連で決まる。

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

図 9-5 同一プログラムの再実行


プログラムを再実行するときの初期状態は,保存したブレークポイント,トレースポイント,静的ウォッチポイントを除き, 第 9.1 節 の説明に従ってプログラムをデバッガの制御下に置いた場合の初期状態と同じです。ソース表示と現在位置ポインタは適宜に更新されます。

プログラムを再実行する場合,デバッガは,現在デバッガの制御下にあるイメージと同じバージョンのイメージを使用します。同一のデバッグ・セッションからそのプログラムの別のバージョン(または他のプログラム)をデバッグするには,メイン・ウィンドウの「File」メニューから「Run Image...」または「Run Foreign Command..」を選択してください ( 第 9.1 節 を参照)。

9.4 現在のデバッグ・セッションからの別のプログラムの実行

最初に 第 9.1 節 の説明に従ってデバッガを起動した場合は,1 つのデバッグ・セッションの中でいつでも別のプログラムをデバッガの制御下に置くことができます。プログラムをデバッガの制御下に置くには, 第 9.1 節 の手順に従ってください。その手順を使用するときの制限事項にも注意してください。

9.5 すでに実行中のプログラムのデバッグ

ここでは,サブプロセスまたは独立プロセスとしてすでに実行中のプログラムをデバッグする方法を説明します。次の手順を実行します。

  1. DCL コマンドを使用して,保持デバッガの構成を開始します。

    $ DEBUG/KEEP 
    

  2. DBG> プロンプトで,CONNECT コマンドを使用してプログラムに割り込み,プログラムをデバッグ制御下に置きます。 CONNECT を使用すると,サブプロセスとして動作中のプログラムに接続したり,独立プロセスとして動作中のプログラムに接続することができます。独立プロセスは,次の要件の両方を満たさなければなりません。

    • 独立プロセスの UIC は,ユーザのプロセスと同じグループでなければならない。

    • 独立プロセスには,CLI が対応付けられていなければならない。


    2 番目の要件は,実際には,プログラムが次のようなコマンドで起動されていなければならないということです。

           $ RUN/DETACH/INPUT=xxx.com SYS$SYSTEM:LOGINOUT 
    


    xxx.comは,プログラムを /NODEBUG で起動するコマンド・プロシージャです。
    いったんプログラムに接続すると,その後のデバッグ・セッションは,通常のデバッグ・セッションと同じです。

  3. プログラムのデバッグが終了したら,次のいずれかの操作を行います。

    • DISCONNECT コマンドを使用して,プログラムをデバッガの制御から解放します。プログラムは実行を続けます。

    • デバッガを終了します。プログラムは終了します。



9.6 プログラムの実行に対する割り込みおよびデバッガ動作の強制終了

デバッグ・セッション中にプログラムの実行に割り込みをかけるには,プッシュ・ボタン・ビューの「Stop」ボタンをクリックします ( 図 8-3 を参照)。これは,たとえばプログラムが無限ループに陥った場合に役立ちます。

進行中のデバッガ動作を強制終了するには,「Stop」をクリックします。これは,たとえばデバッガが長いデータ・ストリームを表示している場合に役立ちます。

「Stop」をクリックしてもデバッグ・セッションは終了しません。プログラムが動作していないとき,またはデバッガがコマンドを実行していないときは「Stop」をクリックしても何も起こりません。

9.7 デバッグ・セッションの終了

デバッグ・セッションを終えるためデバッガを終了するには,メイン・ウィンドウの「File」メニューから「Exit Debugger」を選択するか,プロンプトで EXIT を入力します ( 確認ダイアログを回避する場合 )。これでシステム・レベルに制御が戻ります。

現在のデバッグ・セッションからプログラムを再実行する方法については, 第 9.3 節 を参照してください。

現在のデバッグ・セッションから別のプログラムを実行する方法については, 第 9.4 節 を参照してください。

9.8 デバッガを起動するときの追加オプション

DCL レベル ($) からデバッガを起動するときは, 第 9.1 節 で説明した起動の手順に加え,次のオプションを使用することができます。

  • デバッグするプログラムを DCL の RUN コマンドで実行することによって,デバッガを起動する ( 第 9.8.1 項 を参照 )。

  • Ctrl/Y を押して,実行中のプログラムに割り込みをかけてから, DCL の DEBUG コマンドを使用してデバッガを起動する ( 第 9.8.2 項 を参照 )。

  • 次を行うために,デバッガの省略時のインタフェース ( HP DECwindows Motif for OpenVMS ユーザ・インタフェース ) を無効にする ( 第 9.8.3 項 を参照 )。

    • 別のワークステーション上で HP DECwindows Motif for OpenVMS ユーザ・インタフェースを表示する。

    • コマンド・インタフェースをプログラムの入出力 (I/O) とともに DECterm Motif ウィンドウに表示する。

    • コマンド・インタフェースとプログラムの入出力 (I/O) を別々の DECterm ウィンドウに表示する。

どの場合もデバッガの起動前に, 第 1.2 節 の説明に従ってプログラム・モジュールをコンパイルおよびリンクした。

9.8.1 プログラムの実行によるデバッガの起動

DCL コマンドの RUN program-image を入力すると, 1 つの手順で,デバッガを起動してプログラムをデバッガの制御下に置くことができます。そのプログラムは /DEBUG 修飾子を使用してコンパイルとリンクが行われているものと想定されます。

しかし,この方法で起動した場合は, 第 9.3 節第 9.4 節 でそれぞれ説明した再実行機能と実行機能を使用することはできません。デバッガの制御下で同一プログラムを再実行するか別のプログラムを実行するには,いったんデバッガを終了してからもう一度起動する必要があります。

プログラムの実行によってデバッガを起動するには,DCL コマンドの RUN program-image を入力してデバッガを起動します。次に例を示します。

$ RUN EIGHTQUEENS

省略時の設定では,デバッガが 図 9-4 のように起動され,ユーザ定義初期化ファイルが実行され,メイン・ウィンドウにプログラムのソース・コードが表示されます。現在位置ポインタは,メイン・プログラムの先頭で実行を一時停止していることを示しています。そして,メイン・プログラム・ユニットのソース言語に合わせて言語固有のパラメータが設定されます。

デバッガの起動についての詳しい説明は, 第 9.1 節 を参照してください。

9.8.2 実行中のプログラムの割り込み後のデバッガの起動

ユーザは実行中のプログラムを自由にデバッガの制御下に置くことができます。これは,プログラムが無限ループに陥っていると思われるときや,出力が誤っていることに気付いた場合などに役立ちます。

プログラムをデバッガの制御下に置くには,次の手順に従ってください。

  1. デバッガの制御の外でプログラムを実行するために,DCL コマンドの RUN/NODEBUG program-image を入力する。

  2. 実行中のプログラムに割り込みをかけるために Ctrl/Y を押す。 DCL コマンド・インタプリタに制御が渡される。

  3. デバッガを起動するために,DCL コマンドの DEBUG を入力する。

次に例を示します。

$ RUN/NODEBUG EIGHTQUEENS
   .
   .
   .
[Ctrl/Y]
Interrupt
$ DEBUG
[starts debugger]

デバッガの起動時には,メイン・ウィンドウが表示され,ユーザ定義初期化ファイルが実行されます。また,実行に割り込みがかけられたモジュールのソース言語に合わせて,言語固有のパラメータが設定されます。

どこで実行に割り込みがかけられたかを確認するには,次のようにします。

  1. メイン・ウィンドウを見る。

  2. コマンド入力プロンプトに SET MODULES/CALLS コマンドを入力する。

  3. ソース・ウィンドウに「Call Stack」メニューを表示して,呼び出しスタック上のルーチン呼び出しの並びを確認する。レベル0のルーチンが,現在実行を一時停止されているルーチンである ( 第 10.3.1 項 を参照 )。

この方法でデバッガを起動した場合は, 第 9.3 節第 9.4 節 でそれぞれ説明した再実行機能と実行機能を使用することはできません。デバッガの制御下で同一プログラムを再実行するか別のプログラムを実行するには,いったんデバッガを終了してからもう一度起動する必要があります。

デバッガの起動についての詳しい説明は, 第 9.1 節 を参照してください。


目次 索引

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