Compaq OpenVMS
デバッガ説明書


前へ 次へ 目次 索引


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

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

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

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


$ RUN EIGHTQUEENS

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

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

9.7.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 節 を参照してください。

9.7.3 デバッガの省略時のインタフェースの変更

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

ここでは,次の操作を行うためにデバッガの省略時の DECwindows Motif ユーザ・インタフェースを無効にする方法について説明します。

論理名 DBG$DECW$DISPLAY によって,デバッガの省略時のインタフェースを変更することができます。ほとんどの場合,省略時設定が適正なので DBG$DECW$DISPLAY を定義する必要はありません。

論理名 DBG$DECW$DISPLAY と論理名 DECW$DISPLAY については,第 9.7.3.4 項 を参照してください。

9.7.3.1 別のワークステーション上でのデバッガの Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースの表示

画面の大部分を使用する Compaq DECwindows Motif for OpenVMS アプリケーションをデバッグする場合(または,Motif アプリケーションのポップアップをデバッグする場合),1 台のワークステーションでプログラムを実行し,別のワークステーションにデバッガの Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースを表示すると便利です。その場合は次の手順に従ってください。

  1. プログラムを実行しようとしているDECtermウィンドウに,次の構文で論理定義を入力する。


    DEFINE/JOB DBG$DECW$DISPLAY workstation_pathname
    

    workstation_pathname は,デバッガの Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースを表示するワークステーションのパス名です。このパス名の構文については,『Compaq OpenVMS DCL ディクショナリ』の SET DISPLAY コマンドの説明を参照してください。

    なるべくジョブ定義を使用してください。プロセス定義を使用する場合は,CONFINE 属性を与えないでください。

  2. 論理定義を入力したDECtermウィンドウからプログラムを実行する。DBG$DECW$DISPLAY で指定したワークステーション上にデバッガの Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースが表示されます。アプリケーションのウィンドウ化インタフェースは,通常それが表示されるワークステーションに表示されます。

  3. クライアント/サーバ・モードの使用(第 9.8.2 項 を参照)。

9.7.3.2 DECtermウィンドウへのデバッガのコマンド・ユーザ・インタフェースの表示

デバッガのコマンド・インタフェースをプログラムの入出力(I/O)とともに DECterm ウィンドウの中に表示するには,次の手順に従ってください。

  1. デバッガを起動しようとしている DECterm ウィンドウに次の定義を入力する。


    $ DEFINE/JOB DBG$DECW$DISPLAY " "
    

    二重引用符の間には 1 つ以上のスペース文字を指定することができます。論理名にはジョブ定義を使用してください。プロセス定義を使用する場合は,CONFINE 属性を与えないでください。

  2. 通常の方法で,その DECterm ウィンドウからデバッガを起動する(第 9.1 節 を参照)。

    デバッガのコマンド・インタフェースが同一ウィンドウに表示されます。

次に例を示します。


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

これで,第 9.1 節 で説明した方法でプログラムをデバッガの制御下に置くことができます。

9.7.3.3 別の DECterm ウィンドウへのコマンド・インタフェースとプログラムの入出力(I/O)の個別表示

ここでは,デバッガを起動する DECterm ウィンドウ以外の DECterm ウィンドウに,デバッガのコマンド・インタフェースを表示する方法について説明します。画面用プログラムのデバッグにコマンド・インタフェースを使用する場合は,この別ウィンドウが便利です。

Compaq DECwindows Motif for OpenVMS ではなく VWS が稼働しているワークステーションの DBG> プロンプトで SET MODE SEPARATE コマンドを入力しても同じ効果が得られます。(DECterm ウィンドウの中では SET MODE SEPARATE コマンドは無効です。)

「Debugger」という別のデバッガ・ウィンドウにデバッガのコマンド・インタフェースを表示する方法を次の例に示します。

  1. 例 9-1 のように,コマンド・プロシージャ SEPARATE_WINDOW.COM を作成する。

    例 9-1 コマンド・プロシージャSEPARATE_WINDOW.COM

    $ ! DECtermウィンドウからのSET MODE SEPARATEの効果をシミュレートする。
    $ ! 
    $ CREATE/TERMINAL/NOPROCESS - 
       /WINDOW_ATTRIBUTES=(TITLE="Debugger",- 
               ICON_NAME="Debugger",ROWS=40)- 
       /DEFINE_LOGICAL=(TABLE=LNM$JOB,DBG$INPUT,DBG$OUTPUT)
    $ ALLOCATE DBG$OUTPUT 
    $ EXIT 
    $ ! 
    $ ! CREATE/TERMINAL/NOPROCESSコマンドは,プロセスなしで 
    $ ! DECtermウィンドウを作成する。
    $ ! 
    $ ! /WINDOW_ATTRIBUTES修飾子は,ウィンドウの 
    $ ! 名前(Debugger),アイコン名(Debugger),および 
    $ ! ウィンドウの行数(40)を指定する。
    $ ! 
    $ ! /DEFINE_LOGICAL修飾子は,ウィンドウに論理名DBG$INPUTと 
    $ ! 論理名DBG$OUTPUTを割り当てるので,
    $ ! ウィンドウがデバッガの入出力(I/O)装置になる。
    $ ! 
    $ ! ALLOCATE DBG$OUTPUTコマンドは,デバッグ・セッションの 
    $ ! 終了時に別ウィンドウをオープンしたまま残す。
    

  2. 次のようにコマンド・プロシージャを実行する。


    $ @SEPARATE_WINDOW
    %DCL-I-ALLOC, _MYNODE$TWA8: allocated
    

    SEPARATE_WINDOW.COM で指定されている属性の新しい DECterm ウィンドウが作成される。

  3. デバッガのコマンド・インタフェースを表示するために,第 9.7.3.2 項 の手順を実行する。新しいウィンドウにコマンド・インタフェースが表示される。

  4. これでデバッガのウィンドウにデバッガ・コマンドを入力することができる。プログラムの入出力(I/O)は,デバッガを起動した DECterm ウィンドウに表示される。

  5. EXIT コマンドでデバッグ・セッションを終了すると,プログラムの入出力(I/O)ウィンドウ内の DCL プロンプトに制御が戻るが,デバッガのウィンドウは開いたまま残る。

  6. 第 9.7.3.2 項 のようにプログラムの入出力(I/O)と同じウィンドウにデバッガのコマンド・インタフェースを表示するには,次のコマンドを入力する。


    $ DEASSIGN/JOB DBG$INPUT
    $ DEASSIGN/JOB DBG$OUTPUT
    

    ユーザが明示的に閉じるまで,デバッガのウィンドウは開いたままである。

9.7.3.4 DBG$DECW$DISPLAYとDECW$DISPLAYの説明

ワークステーションで Compaq DECwindows Motif for OpenVMS が稼働している場合,省略時の設定では,デバッガは Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースで起動されます。Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースは,Compaq DECwindows Motif for OpenVMS のアプリケーション全体に通用する論理名 DECW$DISPLAY で指定されたワークステーションに表示されます。DECW$DISPLAY は,FileView または DECterm によってジョブ・テーブルの中に定義されます。DECW$DISPLAY はワークステーション用の表示装置を指します。

DECW$DISPLAY についての詳しい説明は,『Compaq OpenVMS DCL ディクショナリ』の DCL コマンドの SET DISPLAY および SHOW DISPLAY の説明を参照してください。

論理名 DBG$DECW$DISPLAY は,DECW$DISPLAY と等価なデバッガ固有の論理名です。DBG$DECW$DISPLAY は,デバッガ固有の論理名である DBG$INPUT と DBG$OUTPUT に相当します。これらの論理名を使用すると,それぞれ SYS$INPUT と SYS$OUTPUT に割り当てられた値を変更して,デバッガの入出力(I/O)が表示される装置を指定することができます。

デバッガの省略時のユーザ・インタフェースが使用されるのは,DBG$DECW$DISPLAY が未定義である場合,または変換された DBG$DECW$DISPLAY が DECW$DISPLAY と同じである場合です。省略時の設定では DBG$DECW$DISPLAY は未定義です。

DECW$DISPLAY と DBG$DECW$DISPLAY の論理定義を使用している場合,デバッガは次のアルゴリズムに従って動作します。

  1. 論理名 DBG$DECW$DISPLAY が定義されているときはそれを使用する。定義されていないときは DECW$DISPLAY 論理名を使用する。

  2. 論理名を変換する。論理名の値が NULL でない場合(文字列にスペース以外の文字が含まれている場合)は,指定されているワークステーション上に Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースを表示する。論理名の値が NULL である場合(文字列にスペースだけしか含まれていない場合)は,DECterm ウィンドウの中にコマンド・インタフェースを表示する。

OpenVMS デバッガが Compaq DECwindows Motif for OpenVMS ユーザ・インタフェースで起動するように設定するときは,次のいずれかのコマンドを使用します。


$DEFINE DBG$DECW$DISPLAY "WSNAME::0" 
 
$SET DISPLAY/CREATE/NODE=WSNAME 

ただし WSNAME は,ワークステーションのノード名になります。

9.8 Motifデバッグ・クライアントの起動

OpenVMS デバッガ・バージョン 7.2 の機能であるクライアント/サーバ・インタフェースを使用すると,OpenVMS(VAX または Alpha CPU)上で実行されているプログラムを,同じシステム上,または別のシステム上で実行されているクライアント・インタフェースからデバッグすることができます。

デバッガのクライアント/サーバでは,保持デバッガの機能をそのまま使用することができますが,デバッガは,デバッグ・サーバとデバッグ・クライアントという 2 つの構成要素に分割されています。デバッグ・サーバは OpenVMS システム上で実行され,ユーザ・インタフェースを持たない保持デバッガに相当します。一方,デバッグ・クライアントはユーザ・インタフェースを持ち,Compaq DECwindows Motif for OpenVMS を使用する OpenVMS システム上,または Microsoft Windows 95 か Microsoft Windows NT を使用する PC 上で実行されます。

9.8.1 ソフトウェアの必要条件

デバッグ・サーバの実行には,OpenVMS バージョン 7.2 以降が必要です。

デバッグ・クライアントは,次のいずれかのオペレーティング・システム上で実行できます。

また,OpenVMS デバッガ・クライアント/サーバ構成では,サーバを実行する OpenVMS ノードに,次のものがインストールされていることが必要です。

注意

TCP/IP Services for OpenVMS(UCX)バージョン 4.1を実行している場合は,ECO2 がインストールされていることも必要になります。UCX の最新バージョンを実行することもできます。

OpenVMS バージョン 7.2 のインストール・プロシージャでは,DCE RPC が自動的にインストールされます。

9.8.2 サーバの起動

OpenVMSシステムに直接ログインしてからデバッグ・サーバを起動することもできますが,eXcursionのような製品やTelnetのようなターミナル・エミュレータを使用して,リモートでログインするほうが便利です。

デバッグ・サーバを起動するには,次のコマンドを入力します。


$ DEBUG/SERVER

サーバのネットワーク・バインド文字列が表示されます。サーバのポート番号は,角括弧([])で囲まれて表示されます。例を示します。


$ 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... 

クライアントから接続する場合は,サーバを指定するために,いずれかのネットワーク・バインド文字列を使用します(第 9.8.4 項 を参照)。次の表に,ネットワーク・トランスポートとネットワーク・バインド文字列の接頭辞の対応を示します。

ネットワーク・トランスポート ネットワーク・バインド文字列の接頭辞
TCP/IP ncacn_ip_tcp
DECnet ncacn_dnet_nsp
UDP ncadg_ip_udp

注意

通常は,ノード名とポート番号だけを使用してサーバを指定することができます。 nodnam[1034]がその例です。

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

次の例には,DCEがインストールされていないことを示すエラー・メッセージが含まれています。


$ debug/server 
%LIB-E-ACTIMAGE, error activating image disk:[SYSn.SYSCOMMON.][SYSLIB]DTSS$SHR.EXE; 
-RMS-E-FNF, file not found 

このエラー・メッセージの場合,DCEはインストールされていますが,設定されていません。


前へ 次へ 目次 索引