Compaq OpenVMS
デバッガ説明書


前へ 次へ 目次 索引


1.3.2 プログラム実行の終了

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


'Normal successful completion' 

このときユーザには次のオプションがあります。

1.3.3 保持デバッガからの同じプログラムの実行

最初に 第 1.3.1 項 の説明どおりにデバッガを起動した場合は,現在デバッガの制御下にあるプログラムを 1つのデバッガ・セッションの途中でいつでも再実行することができます。それには RERUN コマンドを使用してください。次に例を示します。


DBG> RERUN
Language: C, Module: FORMS 
Type GO to reach main program
DBG> 

RERUNコマンドは,デバッグしていたイメージを終了してから,そのイメージの新しいコピーをデバッガの制御下に置きます。RUNコマンドを使用したときと同じように,実行はメイン・ソース・モジュールの先頭で一時停止されます(第 1.3.1 項 を参照)。

RERUN コマンドを使用する場合,ブレークポイント,トレースポイント,静的ウォッチポイントの現在の状態(有効であるのか,無効であるのか)を保存できます。ただし,特定の非静的ウォッチポイントの状態は,メイン・プログラム・ユニット(実行が再起動される場所)を基準にして,ウォッチされる変数のスコープに応じて保存されないことがあります。RERUN/SAVE は省略時の設定です。すべてのブレークポイント,トレースポイント,ウォッチポイントをクリアするには,RERUN/NOSAVE を使用します。

RERUNコマンドでは,現在デバッガの制御下にあるイメージの同一バージョンが使用されます。同じデバッガ・セッションからそのプログラムの別バージョンまたは他のプログラムをデバッグするときは,RUNコマンドを使用してください。プログラムに新しい引数を付けて再実行するとき,/ARGUMENTS修飾子を使用します(「 ◆引数が必要なプログラムのRUNおよびRERUNコマンド・オプション 」を参照)。

1.3.4 保持デバッガからの他のプログラムの実行

最初に 第 1.3.1 項 の説明どおりにデバッガを起動した場合は,1 つのデバッガ・セッションの中でいつでも他のプログラムをデバッガの制御下に置くことができます。それには RUN コマンドを使用してください。次に例を示します。


DBG> RUN TOTALS
Language: FORTRAN, Module: TOTALS
DBG> 

デバッガはプログラムをロードし,メイン・ソース・モジュールの先頭で実行を一時停止します。

起動の条件と制約についての詳しい説明は,第 1.3.1 項 を参照してください。

RUNコマンドのすべてのオプションについての詳しい説明は,RUNコマンドの説明を参照してください。

1.4 プログラムの実行に対する割り込みとデバッガ・コマンドの強制終了

デバッガ・セッションの途中でプログラムが無限ループに陥り,そのためにデバッガのプロンプトが再表示されなくなったときはCtrl/Cを押します。これでプログラムの実行に割り込みがかかり,デバッガのプロンプトに戻ります。Ctrl/Cを押してもデバッガ・セッションは終了しません。次に例を示します。


DBG> GO
   .
   .
   .
[Ctrl/C]
DBG>

Ctrl/Cを押すことでデバッガ・コマンドの実行を強制終了することもできます。これは,たとえば,デバッガによる長いデータ・ストリームの表示中などに役立ちます。

プログラムを実行していないとき,またはデバッガが何の処理も行っていないときは,Ctrl/Cを押しても何も起こりません。

ユーザのプログラムがCtrl/CのAST(非同期システム・トラップ)サービス・ルーチンを使用できるようにしている場合,デバッガの強制終了機能を他の Ctrlキー・シーケンスに割り当てるには,SET ABORT_KEYコマンドを使用します。現在定義されている強制終了キーを示すには,SHOW ABORT_KEYコマンドを入力します。

デバッガ・セッションの途中でCtrl/Yを押したときの効果は,プログラムの実行中にCtrl/Yを押した場合と同じです。DCLコマンド・インタプリタ($プロンプト)に制御が戻ります。

1.5 デバッガ・セッションの割り込みと再開

デバッガの SPAWN コマンドや ATTACH コマンドを使用すると,デバッガのプロンプトからデバッガ・セッションに割り込みをかけたり,DCL コマンドを入力したり,デバッガのプロンプトへ復帰したりできます。次に示すように,これらのコマンドの機能は本質的に DCL の SPAWN コマンドおよびATTACHコマンドと同じです。

SPAWN コマンドを入力する場合,DCL コマンドをパラメータとして指定することも指定しないこともできます。DCL コマンドを指定すると,指定されたコマンドはサブプロセスの中で実行されます。その DCL コマンドがユーティリティを起動する場合,そのユーティリティはサブプロセス内で起動されます。DCL コマンドの終了時またはユーザがユーティリティを終了したときに,デバッガ・セッションに制御が戻ります。DCL コマンド DIRECTORY を実行する例を次に示します。


DBG> SPAWN DIR [JONES.PROJECT2]*.FOR
   .
   .
   .
%DEBUG-I-RETURNED, control returned to process JONES_1
DBG>

Mail ユーティリティを起動する DCL コマンド MAIL を実行する例を次に示します。


DBG> SPAWN MAIL
MAIL> READ/NEW
   .
   .
   .
MAIL> EXIT
%DEBUG-I-RETURNED, control returned to process JONES_1
DBG>

パラメータを指定しないで SPAWN コマンドを入力すると,サブプロセスが作成され,そのあとで DCL コマンドを入力することができます。サブプロセスからログ・アウトするか,または DCL の ATTACH コマンドを使用して親プロセスに接続すると,デバッガ・セッションへ戻ります。次に例を示します。


DBG> SPAWN
$ RUN PROG2
   .
   .
   .
$ ATTACH JONES_1
Control returned to process JONES_1
DBG>

デバッガ・セッションと,作成されたサブプロセス(別のデバッガ・セッションの場合もある)との間を何度も移動するときは,そのサブプロセスに接続するためにデバッガの ATTACH コマンドを使用します。親プロセスへ戻るには,DCL の ATTACH コマンドを使用します。デバッガを終了するたびに新しいサブプロセスを作成するわけではないので,システム・リソースがより効率的に使用されます。

2 つのデバッガ・セッションを同時に実行している場合は,SET PROMPT コマンドを使用して,一方のセッション用に新しいデバッガ・プロンプトを定義することができます。これはセッションを区別するのに便利です。

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

DCL の RUN filespec コマンドを使用すれば,1 回の手順で非保持デバッガで,デバッガの制御のもとでプログラムを起動できます。

非保持デバッガでデバッガを実行している場合には,第 1.3.3 項第 1.3.4 項 で説明したデバッガの RERUN 機能と RUN 機能を使用できません。デバッガの制御のもとで同じプログラムを再実行したり,別のプログラムを実行するには,デバッガをいったん終了し,再起動しなければなりません。

プログラムの実行によって非保持デバッガを開始するには,次の手順に従ってください。

  1. 第 1.2.1 項 および 第 1.2.2 項 の説明どおりにプログラムをコンパイルとリンクしたことを確認する。

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

次に例を示します。


$ RUN FORMS
            Debugger Banner and Version Number 
Language: C, Module: FORMS
DBG>

デバッガが起動すると,そのバナーが表示され,ユーザ定義の初期化ファイルが実行されます。そして,メイン・プログラムのソース言語に合わせて言語固有のパラメータが設定されるとともに,プログラムの実行がメイン・プログラムの先頭で中断され,コマンドを要求するプロンプトが出されます。

起動の条件についての詳しい説明は,第 1.2.3 項第 1.3.1 項 を参照してください。

1.7 実行中のプログラムに割り込みをかけたあとのデバッガの起動

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

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

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

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

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

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

次に例を示します。


$ RUN/NODEBUG FORMS
   .
   .
   .
[Ctrl/Y]
Interrupt
$ DEBUG
            Debugger Banner and Version Number 
Language: C, Module: FORMS
DBG> 

デバッガが起動すると,そのバナーが表示され,ユーザ定義の初期化ファイルが実行されます。そして,実行が割り込みをかけられた地点のモジュールのソース言語に合わせて言語固有のパラメータが設定され,コマンドを要求するプロンプトが出されます。

どこで実行に割り込みがかけられたか,普通はユーザには分かりません。実行が一時停止された地点と,呼び出しスタック上のルーチン呼び出しの並びを確認するには,SHOW CALLSコマンドを入力します(SHOW CALLSコマンドについては 第 2.3.3 項 を参照)。

この方法で非保持デバッガを起動した場合は,第 1.3.3 項第 1.3.4 項 でそれぞれ説明したデバッガの再実行機能と実行機能を使用することはできませんのでご注意ください。デバッガの制御下で同じプログラムを再実行する,または新しいプログラムを実行するには,いったんデバッガを終了してからもう一度起動し直す必要があります。

起動の条件についての詳しい説明は,第 1.2.3 項第 1.3.1 項 を参照してください。

1.8 デバッガ・セッションの終了

通常の方法でデバッガ・セッションを終了し,DCL レベルへ戻るには,EXIT または QUIT を入力するか,Ctrl/Z を押します。次に例をあげます。


DBG> EXIT
$

QUIT コマンドは,ログ・ファイルを閉じるためにデバッガ終了ハンドラを起動し,画面とキーパッドの状態等をリストアします。

EXIT コマンドと Ctrl/Z は同じ機能を実行します。これらは QUIT コマンドと同じ機能を実行し,さらにプログラムで宣言されている終了ハンドラも実行します。

1.9 DECwindows Motifを実行しているワークステーションでのプログラムのデバッグ

使用しているワークステーションで Compaq DECwindows Motif for OpenVMS が動いている場合,省略時の設定では,デバッガは Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースで起動されます。このときに Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースが表示されるのは,Compaq DECwindows Motif for OpenVMS のアプリケーション全体に通用する DECW$DISPLAY 論理名で指定されたワークステーションです。

DBG$DECW$DISPLAY 論理名を使用すると,この省略時の設定を無効にして,デバッガのコマンド・インタフェースをプログラムの入出力(I/O)とともに DECterm ウィンドウに表示することができます。

DECterm ウィンドウにデバッガのコマンド・インタフェースを表示するには,次の手順に従ってください。

  1. デバッガの起動元のDECtermウィンドウに次の定義を入力する。


    $ DEFINE/JOB DBG$DECW$DISPLAY " "
    


    二重引用符の間には1つまたは複数のスペース文字を指定できる。論理名はジョブ定義を使用する。プロセス定義を使用する場合は CONFINE 属性を指定してはならない。

  2. 定義を入力した DECterm ウィンドウから通常の方法でデバッガを起動する(第 1.3.1 項 を参照)。そのウィンドウにデバッガのコマンド・インタフェースが表示される。

次に例を示します。


$ DEFINE/JOB DBG$DECW$DISPLAY " "
$  DEBUG/KEEP 
            Debugger Banner and Version Number 
DBG>

これで,第 1.3.1 項 で説明したように,プログラムをデバッガの制御下に置くことができます。DBG$DECW$DISPLAY 論理名と DECW$DISPLAY 論理名についての詳しい説明は,第 9.7.3 項 を参照してください。

Compaq DECwindows Motif for OpenVMS を実行しているワークステーションでは,OpenVMS デバッガのクライアント/サーバ構成を使用することもできます。詳しい説明は,第 9.8 節 を参照してください。

1.10 デバッグ・クライアントを実行しているPCからのプログラムのデバッグ

OpenVMS デバッガ・バージョン 7.2 およびそれ以降の機能であるクライアント/サーバ・インタフェースを使用すると,次に示すオペレーティング・システムを実行している PC デバッグ・クライアント・インタフェースから,OpenVMS(VAX または Alpha CPU)上で実行されているプログラムをデバッグすることができます。

OpenVMSクライアント/サーバ構成を使用すると,次のことが可能です。

クライアントとサーバは,次のいずれかのトランスポート経由で,Distributed Computing Environment/Remote Procedure Calls(DCE/RPC)を使用して通信を行います。

OpenVMS ノード上でサーバを起動するには,次のコマンドを入力します。


$ DEBUG/SERVER

サーバのネットワーク・バインド文字列が表示されます。Compaq DECwindows Motif for OpenVMS ,または Microsoft Windows クライアントをサーバに接続するときは,この文字列のいずれかを指定する必要があります。例を示します。


$ DEBUG/SERVER 
 
%DEBUG-I-SPEAK: TCP/IP: YES, DECnet: YES, UDP: YES 
%DEBUG-I-WATCH: Network Binding: ncacn_ip_tcp:16.32.16.138[1034] 
%DEBUG-I-WATCH: Network Binding: ncacn_dnet_nsp:19.10[RPC224002690001] 
%DEBUG-I-WATCH: Network Binding: ncadg_ip_udp:16.32.16.138[1045] 
%DEBUG-I-AWAIT: Ready for client connection... 

クライアントの「Server Connection」ダイアログ・ボックスには,ネットワーク・プロトコル(TCP/IP,DECnet,または UDP)と,対応するネットワーク・バインド文字列を入力してください(第 9.8.4 項 を参照)。

注意

省略時の設定では,サーバを起動したウィンドウに,メッセージとプログラム出力が表示されます。必要に応じて,プログラム出力を別のウィンドウにリダイレクトすることができます。

デバッグ・クライアントの使用方法の詳細については,第 11 章 を参照してください。

1.11 CLIなしで動作する切り離されたプロセスのデバッグ

デバッガの Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースで設計と機能強化を行うとき,デバッグするプロセスにコマンド行インタプリタ(CLI)がなければなりません。(プリント・シンビオントのように)CLI なしで動作する,切り離されたプロセスをデバッグするときは,デバッガに文字セル(画面モード)インタフェースを使用します。

これを行うときは,DBG$INPUT,DBG$OUTPUT,DBG$ERRORを,ログインしていない端末ポートに指定します。こうすることにより,その端末の標準文字セル・インタフェースでイメージをデバッグできるようになります。

例を示します。


    $ DEFINE/TABLE=GROUP DBG$INPUT  TTA3: 
    $ DEFINE/TABLE=GROUP DBG$OUTPUT TTA3: 
    $ DEFINE/TABLE=GROUP DBG$ERROR  TTA3: 
    $ START/QUEUE SYS$PRINT /PROCESSOR=dev:[dir]test_program 
 
    [Debugger starts up on logged-out terminal TTA3:] 


前へ 次へ 目次 索引