[ 前のページ ]
[ 次のページ ]
[ 目次 ]
[ 索引 ]
[ DOC Home ]
本章では次の方法について説明します。
この節では,DCLレベル($)からデバッガを起動して,ユーザのプログラムをデバッガの制御下に置く一般的な方法について説明します。 オプションの起動方法については, 第9.7 節を参照してください。
ここで説明している方法に従って,保持デバッガでデバッガを起動すると,Rerun ( 第9.3節を参照)およびRun (第9.4節を参照)のそれぞれの機能を使用できるようになります。
デバッガを起動してプログラムをデバッガの制御下に置くには,次のようにします。
$ DEBUG/KEEP
省略時の設定では,図 9-1 のようにデバッガが起動します。 プログラムをデバッガの制御下に置く( 手順4)までメイン・ウィンドウは空のままです。デバッガの起動時にはユーザ定義初期化ファイルが実行されます( 第13.2 節を参照)。
$X1 :== RUN MYDISK:[MYDIR.MYSUBDIR]EIGHTQUEENS.EXE
デバッガが,プログラムを制御できるようになると,デバッガは次の動作を行います。
コマンド・ビューに表示されたメッセージは,このデバッグ・セッションがC プログラム用に初期化されており,ソース・モジュールの名前がEIGHTQUEENS であることを示しています。
ある種のプログラムでは,メイン・プログラムの前に,初期化コードの先頭でプログラムの実行が中断されるよう一時的なブレークポイントが設定され, 次のメッセージが表示されます。
Type GO to reach MAIN program No source line for address: nnnnnnnn
いくつかのプログラム(たとえばAda)では,完全シンボル情報を使用して, ブレークポイントで初期化コードをデバッグすることができます。 初期化を行うと,言語別のデバッガ・パラメータが設定されます。これらのパラメータは, デバッガが名前や式を解析する方法,デバッガが出力する形式などを制御します。 これにより,第10 章の方法を使用してプログラムをデバッグできるようになります。
デバッガの制御下でのプログラムの実行については,次の制限事項に注意してください。
存在しないプログラムを実行しようとしたり,存在するプログラムの名前の綴りを誤って入力すると, 次のエラー・メッセージがコマンド・ビューではなく,DECterm ウィンドウに表示されます。
%DCL-W-ACTIMAGE, error activating image -CLI-E-IMAGEFNF, image file not found
この問題を回避するには,「File Selection」ポップアップの「Select an application to run」ボックスに正しいファイル指定が指定されているかどうか確認してください。
1つのデバッグ・セッションの中でプログラムの実行が正常に終了すると, 次のメッセージが発行されます。
このときユーザには次のオプションが与えられます。
保持デバッガでデバッガを実行する場合(第9.1節を参照), デバッグ・セッションを実行している間ならいつでも, 現在デバッガによって制御されているプログラムを再実行できます。
プログラムを再実行するには,次の手順に従ってください。
プログラムを再実行するときの初期状態は,保存したブレークポイント, トレースポイント,静的ウォッチポイントを除き,第9.1節の説明に従ってプログラムをデバッガの制御下に置いた場合の初期状態と同じです。 ソース表示と現在位置ポインタは適宜に更新されます。
プログラムを再実行する場合,デバッガは,現在デバッガの制御下にあるイメージと同じバージョンのイメージを使用します。 同一のデバッグ・ セッションからそのプログラムの別のバージョン(または他のプログラム) をデバッグするには,メイン・ウィンドウの「File」メニューから「Run Image... 」または「Run Foreign Command..」を選択してください( 第9.1節を参照)。
最初に第9.1節の説明に従ってデバッガを起動した場合は,1 つのデバッグ・セッションの中でいつでも別のプログラムをデバッガの制御下に置くことができます。 プログラムをデバッガの制御下に置くには, 第9.1節の手順に従ってください。 その手順を使用するときの制限事項にも注意してください。
デバッグ・セッション中にプログラムの実行に割り込みをかけるには, プッシュ・ボタン・ビューの「Stop」ボタンをクリックします(図 8-3 を参照)。これは,たとえばプログラムが無限ループに陥った場合に役立ちます。
進行中のデバッガ動作を強制終了するには,「Stop」をクリックします。 これは,たとえばデバッガが長いデータ・ストリームを表示している場合に役立ちます。
「Stop」をクリックしてもデバッグ・セッションは終了しません。プログラムが動作していないとき, またはデバッガがコマンドを実行していないときは「Stop 」をクリックしても何も起こりません。
デバッグ・セッションを終えるためデバッガを終了するには,メイン・ウィンドウの「File 」メニューから「Exit Debugger」を選択するか,プロンプトでEXIT を入力します(確認ダイアログを回避する場合)。これでシステム・ レベルに制御が戻ります。
現在のデバッグ・セッションからプログラムを再実行する方法については, 第9.3節を参照してください。
現在のデバッグ・セッションから別のプログラムを実行する方法については, 第9.4節を参照してください。
DCLレベル($)からデバッガを起動するときは,第9.1節で説明した起動の手順に加え, 次のオプションを使用することができます。
どの場合もデバッガの起動前に,第1.2節の説明に従ってプログラム・ モジュールをコンパイルおよびリンクしたことと, および第1.9節の説明にしたがって適切なデバッグ構成をしたことを確認してください。
DCLコマンドのRUN program-imageを入力すると,1つの手順で, デバッガを起動してプログラムをデバッガの制御下に置くことができます。 そのプログラムは/DEBUG修飾子を使用してコンパイルとリンクが行われているものと想定されます。
しかし,この方法で起動した場合は,第9.3 節と第9.4節でそれぞれ説明した再実行機能と実行機能を使用することはできません。 デバッガの制御下で同一プログラムを再実行するか別のプログラムを実行するには, いったんデバッガを終了してからもう一度起動する必要があります。
プログラムの実行によってデバッガを起動するには,DCLコマンドのRUN program-imageを入力してデバッガを起動します。 次に例を示します。
$ RUN EIGHTQUEENS
省略時の設定では,デバッガが図 9-4 のように起動され,ユーザ定義初期化ファイルが実行され, メイン・ウィンドウにプログラムのソース・コードが表示されます。 現在位置ポインタは,メイン・プログラムの先頭で実行を一時停止していることを示しています。 そして,メイン・プログラム・ユニットのソース言語に合わせて言語固有のパラメータが設定されます。
デバッガの起動についての詳しい説明は,第9.1節を参照してください。
ユーザは実行中のプログラムを自由にデバッガの制御下に置くことができます。 これは,プログラムが無限ループに陥っていると思われるときや, 出力が誤っていることに気付いた場合などに役立ちます。
プログラムをデバッガの制御下に置くには,次の手順に従ってください。
次に例を示します。
$ RUN/NODEBUG EIGHTQUEENS . . . <Ctrl/Y> Interrupt $ DEBUG [starts debugger]
デバッガの起動時には,メイン・ウィンドウが表示され,ユーザ定義初期化ファイルが実行されます。 また,実行に割り込みがかけられたモジュールのソース言語に合わせて, 言語固有のパラメータが設定されます。
どこで実行に割り込みがかけられたかを確認するには,次のようにします。
この方法でデバッガを起動した場合は,第9.3 節と第9.4節でそれぞれ説明した再実行機能と実行機能を使用することはできません。 デバッガの制御下で同一プログラムを再実行するか別のプログラムを実行するには, いったんデバッガを終了してからもう一度起動する必要があります。
デバッガの起動についての詳しい説明は,第9.1節を参照してください。
ワークステーションでDECwindows Motifを稼働している場合,省略時の設定では, デバッガはDECwindows Motifインタフェースで起動されます。 DECwindows Motifインタフェースは,DECwindows Motifのアプリケーション全体に通用する論理名DECW$DISPLAY で指定されたワークステーションに表示されます。
ここでは,次の操作を行うためにデバッガの省略時のDECwindows Motifインタフェースを無効にする方法について説明します。
論理名DBG$DECW$DISPLAYによって,デバッガの省略時のインタフェースを変更することができます。 ほとんどの場合,省略時設定が適正なのでDBG$DECW$DISPLAY を定義する必要はありません。
論理名DBG$DECW$DISPLAYと論理名DECW$DISPLAYについては,第9.7.3.4項を参照してください。
画面の大部分を使用するDECwindows Motifアプリケーションをデバッグする場合( または,Motifアプリケーションのポップアップをデバッグする場合) ,1台のワークステーションでプログラムを実行し,別のワークステーションにデバッガのDECwindows Motif インタフェースを表示すると便利です。 その場合は次の手順に従ってください。
DEFINE/JOB DBG$DECW$DISPLAY workstation_pathname
workstation_pathnameは,デバッガのDECwindows Motifインタフェースを表示するワークステーションのパス名です。 このパス名の構文については, 『OpenVMS DCLディクショナリ』のSET DISPLAYコマンドの説明を参照してください。
なるべくジョブ定義を使用してください。プロセス定義を使用する場合は,CONFINE 属性を与えないでください。
デバッガのコマンド・インタフェースをプログラムの入出力(I/O)とともにDECterm ウィンドウの中に表示するには,次の手順に従ってください。
$ DEFINE/JOB DBG$DECW$DISPLAY " "
二重引用符の間には1つ以上のスペース文字を指定することができます。 論理名にはなるべくジョブ定義を使用してください。プロセス定義を使用する場合は,CONFINE 属性を与えないでください。
デバッガのコマンド・インタフェースが同一ウィンドウに表示されます。
次に例を示します。
$ DEFINE/JOB DBG$DECW$DISPLAY " " $ DEBUG/KEEP Debugger Banner and Version Number DBG>
これで,第9.1節で説明した方法でプログラムをデバッガの制御下に置くことができます。
ここでは,デバッガを起動するDECtermウィンドウ以外のDECtermウィンドウに, デバッガのコマンド・インタフェースを表示する方法について説明します。 画面用プログラムのデバッグにコマンド・インタフェースを使用する場合は, この別ウィンドウが便利です。
DECwindows MotifではなくVWSが稼働しているワークステーションのDBG> プロンプトでSET MODE SEPARATEコマンドを入力しても同じ効果が得られます。DECterm ウィンドウの中ではSET MODE SEPARATEコマンドは無効です。
「Debugger」という別のデバッガ・ウィンドウにデバッガのコマンド・インタフェースを表示する方法を次の例に示します。
$ ! 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コマンドは,デバッグ・セッションの $ ! 終了時に別ウィンドウをオープンしたまま残す。
$ @SEPARATE_WINDOW %DCL-I-ALLOC, _MYNODE$TWA8: allocated
SEPARATE_WINDOW.COMで指定されている属性の新しいDECtermウィンドウが作成される。
$ DEASSIGN/JOB DBG$INPUT $ DEASSIGN/JOB DBG$OUTPUT
ユーザが明示的に閉じるまで,デバッガのウィンドウは開いたままである。
ワークステーションでDECwindows Motifが稼働している場合,省略時の設定では, デバッガはDECwindows Motifインタフェースで起動されます。 DECwindows Motifインタフェースは,DECwindows Motifのアプリケーション全体に通用する論理名DECW$DISPLAY で指定されたワークステーションに表示されます。DECW$DISPLAY は,FileViewまたはDECtermによってジョブ・ テーブルの中に定義されます。DECW$DISPLAYはワークステーション用の表示装置を指します。
DECW$DISPLAYについての詳しい説明は,『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$DISP LAY が未定義である場合,または変換されたDBG$DECW$DISPLAY がDECW$DISPLAYと同じである場合です。省略時の設定ではDBG$DECW$DISPLAY は未定義です。
DECW$DISPLAYとDBG$DECW$DISPLAYの論理定義を使用している場合,デバッガは次のアルゴリズムに従って動作します。
OpenVMSデバッガがDECwindows Motifインタフェースで起動するように設定するときは, 次のいずれかのコマンドを使用します。
$DEFINE DBG$DECW$DISPLAY "WSNAME::0" $SET DISPLAY/CREATE/NODE=WSNAME
ただしWSNAMEは,ワークステーションのノード名になります。
OpenVMSデバッガ・バージョン7.2の機能であるクライアント/サーバ・インタフェースを使用すると,OpenVMS(VAX またはAlpha CPU)上で実行されているプログラムを, 同じシステム上,または別のシステム上で実行されているクライアント・ インタフェースからデバッグすることができます。
デバッガのクライアント/サーバでは,保持デバッガの機能をそのまま使用することができますが, デバッガは,デバッグ・サーバとデバッグ・クライアントという2 つの構成要素に分割されています。デバッグ・サーバはOpenVMS システム上で実行され,ユーザ・インタフェースを持たない保持デバッガに相当します。 一方,デバッグ・クライアントはユーザ・インタフェースを持ち,DECwindows Motif を使用するOpenVMSシステム上,またはMicrosoft Windows 95 かMicrosoft Windows NTを使用するPC上で実行されます。
デバッグ・サーバの実行には,OpenVMSバージョン7.2以降が必要です。
デバッグ・クライアントは,次のいずれかのオペレーティング・システム上で実行できます。
また,OpenVMSデバッガ・クライアント/サーバ構成では,サーバを実行するOpenVMS ノードに,次のものがインストールされていることが必要です。
OpenVMS バージョン7.2のインストール・プロシージャでは,DCE RPCが自動的にインストールされます。
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はインストールされていますが,設定されていません。
デバッガのクライアント/サーバ・インタフェースを使用すると,同じサーバに1 つ以上のクライアントを接続することが可能になります。この機能を利用すると, チームによるデバッグや教室でのセッション,その他のアプリケーションを実現できます。
プライマリ・クライアントは,サーバに最初に接続されたクライアントです。 セカンダリ・クライアントは,同じサーバに後から接続されたクライアントです。 プライマリ・クライアントによって,サーバにセカンダリ・ クライアントを接続できるようにするかどうかが制御されます。
セッション中で,いくつのセカンダリ・クライアントを使用できるようにするかを指定する方法については, 第9.8.4 項で説明します。
セッションとは,特定のクライアントと特定のサーバの間の接続のことです。 クライアントでは,サーバへの接続の際にクライアントが使用したネットワーク・ バインド文字列によって,各セッションが識別されます。デバッグ・ サーバを起動してから,Motifデバッガ・クライアントを起動してください。 起動するには,次のコマンドを入力ます。
$ DEBUG/CLIENT
Motifデバッグ・クライアントからセッションを確立するには,「File」メニューの「Server Connection 」をクリックします。「Server Connection」ダイアログの「Connection」リストには,省略時の設定のネットワーク・ バインド文字列が表示されます。表示される文字列は直前に入力したものか, またはクライアントが実行されているノードとなります。 サーバを省略時の設定のバインド文字列に関連付ける必要はありません。 図 9-6に「Server Connection」ダイアログを示します。
「Server Connection」ダイアログの下部にあるボタンを使用すると,次のことを行えます。
また,「Options」ボタンをクリックすると,「Server Options」ダイアログが表示されます。 「Server Options」ダイアログでは,使用するトランスポートを選択することができます( 第11.5.1 項を参照)。
「Server Options」ダイアログでは,新規のセッションで使用できるセカンダリ・ クライアントの数(0〜31)を選択することもできます。
図 9-7に「Server Options」ダイアログを示します。
クライアントをサーバに接続するには,次の手順に従ってください。
上記の手順を繰り返し,新規のネットワーク・バインド文字列をその都度指定することによって, いくつでも,サーバに対する接続を確立することができます。
サーバに接続してセッションを起動すると,「Server Connection」ダイアログの「Active Sessions 」リストにセッションが表示されます(図 9-8 を参照)。前後のセッションに切り替えることが可能です。 新規のセッションに切り替えると,表示されているデバッガ画面の内容が, デバッガによって新しい内容に更新されます。
別のセッションに切り替えるには,次の手順に従ってください。
セッションがアクティブになっている間は,セッションで使用できるセカンダリ・ クライアントの数を変更できない点に注意してください。セッションで使用できるセカンダリ・ クライアントの数を変更するには,プライマリ・ クライアントで次の手順に従ってください。
「File」メニューの「Exit Debug?」をクリックして,「Confirm Exit」ダイアログを表示します。 図 9-9に「Confirm Exit 」ダイアログを示します。
「Confirm Exit」ダイアログが表示されたら,次のいずれかを行ってください。
デバッグ・サーバを終了しない場合は,別のデバッグ・クライアントからサーバに接続することが可能です。 クライアントを終了しない場合は,ネットワーク・ バインド文字列が分かっている別のサーバに接続することができます。
[ 前のページ ]
[ 次のページ ]
[ 目次 ]
[ 索引 ]
[ DOC Home ]