前ページへはじめに Animator の操作 次ページへ

第 2 章 Animator の起動

この章では、Animator の起動方法について説明します。

2.1 Animator を起動する前に

Animator を使用するには、呼び出される全プログラムを含め、すべてのソースコードをコンパイルする必要があります。使用している環境でのコンパイル方法の詳細については、『Server Express ユーザガイド』 を参照してください。プログラムの構文チェックには、COBOL Editor を使用できます。詳細は『Utilities Handbook』『Editor』 の章にある 『Syntax-checking and Animating』 の項を参照してください。1 行の文字数が 80 文字を超えるソースコードでも、SOURCEFORMAT"FREE" 指令でコンパイルすればアニメート可能です。ただし、Animator は書式のないソースコードを処理できますが、通常の COBOL の行数がスクロールの上限であるため、予想外の不都合が生じる場合があります。


: エスケープシーケンスを画面出力してカーソルや色の操作などを行うプログラムは、旧バージョンの製品では COBCTRLCHAR 環境変数の設定が必要であり、そのデバッグはサポートされていませんでした。現在の Server Express では COBCTRLCHAR はサポート対象ではなく、エスケープシーケンスの出力もサポートされていません。

画面操作用の COBOL 構文や COBOL ルーチンを使用せず、画面に直接出力するプログラムをデバッグするには、クロスセッションデバッグを実施する必要があります。クロスセッションデバッグの詳細については、『クロスセッションデバッグ』 を参照してください。


Animator では、あらゆる形式の実行可能ファイルのデバッグが可能です。次の各項では、Cob ユーティリティを使用して Animator で処理できる実行可能ファイルを作成する方法を説明します。Animator 用の実行可能ファイルを作成すると、常に Animator 情報ファイルが生成されます。このファイルは Animator に必要な追加情報を格納しており、拡張子は .idy です。Server Express で作成した .idy ファイルは、Net Express や Mainframe Express への移植が可能です。したがって、Net Express や Mainframe Express でもアプリケーションをデバッグできます。なお、.idy ファイルを移植するときには、対応する .int ファイルも同時に移植する必要があります。他の環境でデバッグするために .idy ファイルを移植する場合は、.int 以外の実行可能ファイルを使用できません。

システムが .idy ファイルの書き出しに失敗すると、次のエラーが通知されます。

I-O Error: IDY file (fatal)

このエラーが通知された場合は、ディスクの空き容量をチェックし、必要に応じて空き容量を増やします。さらに、ファイルに LOCK 属性や READ ONLY 属性が設定されている場合は、それを解除した後、プログラムを再コンパイルします。

Cob ユーティリティの詳細については、『Server Express ユーザガイド』 の次の章を参照してください。

.int ファイルは次のコマンドで作成します。
cob prog-name.cbl

Server Express はデフォルトで -a フラグを使用してソースファイルをコンパイルし、Animator で使用できるようにします。

.gnt ファイルは次のコマンドで作成します。
cob -ug prog-name.cbl
呼び出し可能な共有オブジェクトは次のコマンドで作成します。
cob -zg prog-name.cbl
システム実行可能ファイルは次のコマンドで作成します。
cob -xg prog-name.cbl

2.2 Animator の起動

Animator は、次の方法で起動できます。

この項では、Animator を起動するための各種の方法と、デバッグ対象のアプリケーションを設定する方法について説明します。いずれの場合でも、Animator でプログラムをデバッグするには、その前にプログラムをデバッグ用にコンパイルする必要があります。


: Animator は COBOL Editor から起動することも可能です。詳細については、『Utilities Handbook』『Editor』 の章にある 『Syntax-checking and Animating』 の項を参照してください。


Animator を起動する前に、使用している端末に応じて TERM 環境変数を適切な値に設定してください。現在の作業ディレクトリ以外の場所に格納されているソースファイルと情報ファイルを Animator に検索させるには、さらに 4 つの環境変数 (COBPATH、COBCPY、COBIDY、および COBAIF) を設定する必要があります。 COBDATA 環境変数を設定する場合、システム提供の check.lbr ファイルをこのパスのリストに追加してください。 詳細については、『Server Express ユーザガイド』 の付録、『環境変数』 を参照してください。

2.2.1 コマンド行からの Animator の起動

Animator は、次の 3 通りの方法でコマンド行から起動できます。

2.2.1.1 端末からの Animator の起動

使用しているウィンドウで Animator を起動するには、次の anim コマンドを使用します。

anim [switchparams] program-name [directives]

または、デバッグ対象がマルチスレッドプログラムの場合には、anim の代わりに次の anim_t コマンドを使用します。

anim_t [switchparams] program-name [directives]

パラメータの内容は、次のとおりです。

switchparams 一連のスイッチ。有効化するスイッチにはプラス記号 (+)、無効化するスイッチにはマイナス記号 (-) をそれぞれ直前に付けます。スイッチの指定順序は特に決まっていません。前回のスイッチの設定は、受け付けられた設定です。

指定可能なスイッチについては、『Server Express ユーザガイド』『ランタイムスイッチの詳細』 の章を参照してください。

program-name アニメート対象のファイルの名前。パスを指定しない場合には、現行ディレクトリが検索されます。

拡張子を省略すると、最初に呼び出し可能な共有オブジェクトが検索され、続いて .gnt ファイル、.int ファイル、.lbr ファイルの順序でプログラムが検索されます。

directives 1 つ以上の Animator 指令を列挙した文字列 (省略可能)。それぞれの指令は 1 つ以上の空白文字で区切ります。複数の行にわけることはできません。

指定可能な Animator 指令については、『Animator 指令』 の章を参照してください。

2.2.1.2 異なるウィンドウやプロセスからの Animator の起動

Animator は、デバッグ対象のプログラムとは異なるウィンドウやプロセスでも起動できます。この起動方法は、動的アタッチによるオンデマンドデバッグで特に効果的です。この方法で Animator を起動するには、次の cobanim コマンドを使用します。

cobanim [switchparams] [directives]

デバッグ対象がマルチスレッドプログラムの場合は、cobanim の代わりに次の cobanim_t コマンドを使用します。

cobanim_t [switchparams] [directives] 

パラメータの内容は、次のとおりです。

switchparams 一連のスイッチ。有効化するスイッチにはプラス記号 (+)、無効化するスイッチにはマイナス記号 (-) をそれぞれ直前に付けます。スイッチの指定順序は特に決まっていません。前回のスイッチの設定は、受け付けられた設定です。

指定可能なスイッチについては、『Server Express ユーザガイド』『ランタイムスイッチの詳細』 の章を参照してください。

directives 1 つ以上の Animator 指令を列挙した文字列 (省略可能)。それぞれの指令は 1 つ以上の空白文字で区切ります。複数の行にわけることはできません。

指定可能な Animator 指令については、『Animator 指令』 の章を参照してください。

2.2.1.3 Animator のスリープモードでの起動

Animator はスリープモードで起動することもできます。この方法では、Animator はプロセスがアタッチされるまでスリープモードのまま待機し、プロセスがアタッチされると、デバッグ対象のプログラムとは別のウィンドウやプロセスで起動します。この起動方法は、クロスセッションデバッグで特に効果的です。Animator をスリープモードで起動するには、次の cobanimsrv コマンドを使用します。

cobanimsrv [directives]

デバッグ対象がマルチスレッドプログラムの場合には、cobanimsrv の代わりに次の cobanimsrv_t コマンドを使用します。

cobanimsrv_t [directives]

パラメータの内容は、次のとおりです。

directives 1 つ以上の Animator 指令を列挙した文字列 (省略可能)。それぞれの指令は 1 つ以上の空白文字で区切ります。複数の行にわけることはできません。

指定可能な Animator 指令については、『Animator 指令』 の章を参照してください。

2.2.1.4 Animator 指令の指定

Animator の起動時に指令を指定すると、Animator の動作を調整することができます。指令はコマンド行の program-name パラメータに続いて指定します。

ここでは Animator 指令の指定形式を説明します。各指令の詳細については、『Animator 指令』 の章を参照してください。

Animator 指令は次の形式で指定します。

[no] keyword=parameter

パラメータの内容は、次のとおりです。

no keyword に指定した指令を無効にします。nokeyword は、続けて記述することも、1 つ以上の空白文字で区切ることもできます。no で無効化できる指令は限定されています。このパラメータは、一部の指令にのみ有効で、該当する指令には、その旨が示されています。
keyword 1 つ以上の Animator 指令。指定可能な指令については、『Animator 指令』 を参照してください。

2 つ以上の指令を指定する場合には、指令全体を引用符で囲んで 1 つのグループであることを UNIX に対して明示します。引用符で囲まないと 2 番目以降の指令は無視されます。その場合でも、警告は表示されません。

parameter keyword の修飾語。parameter が効果を持つのは一部の指令のみです。該当する指令には、説明箇所でその旨を示しています。

=parameterkeyword は続けて記述します。UNIX は空白文字を区切り文字として処理するため、Animator のパラメータには空白文字を入れないでください。parameter にファイル名を指定する場合は、特に明示されていない限り、必ず完全パス名を含めます。

Animator 指令を $SET 文で指定したり、DIRECTIVES ファイル内に記述する場合には、parameter の直前に等号 (=) を付けません。代わりに "parameter" のように二重引用符で囲むか、または (parameter) のようにかっこで囲みます。

2.2.2 JIT デバッグ

JIT デバッグとは、プログラムが実行時エラーで終了した場合に Animator を起動させ、プログラムをデバッグする方法です。この方法を使えば、プログラムの異常発生時の状態を知ることができます。

JIT デバッグを使用するには、構成ファイルに debug_on_error 実行時調整変数を追加する必要があります。起動するデバッガを指定するには、debugger_command 実行時調整変数を構成ファイルに追加します。

実行時構成ファイルと実行時調整変数の詳細については、『Server Express ユーザガイド』『実行時の構成』 の章を参照してください。

2.2.3 コアファイルデバッグ

コアファイルデバッグでは、プログラムでエラーが発生した場合に、オペレーティングシステムが生成したコアファイルを使用して、問題の発生原因を詳しく調べることができます。コアファイルは、プログラムが異常終了した時点で当該プロセスに割り当てられていたメモリ領域のスナップショットです。

オペレーティングシステムにコアファイルを生成させるには、実行時構成ファイルに core_on_error 実行時調整変数を追加する必要があります。

実行時構成ファイルと実行時調整変数の詳細については、『Server Express ユーザガイド』『実行時の構成』 の章を参照してください。


: debug_on_error 実行時調整変数が設定されていると、core_on_error は追加しても無視されます。したがって、core_on_error を追加するときには、debug_on_error への参照をすべて削除する必要があります。


コアファイルの内容を表示するには、次のコマンドで Animator を起動します。

anim core

2.2.4 動的アタッチによるオンデマンドデバッグ

動的アタッチメントデバッグを使用すれば、実行しているプログラムの任意の位置で Animator を起動できます。動的アタッチメントデバッグを使用するには、アタッチ先のプロセスを Animator に通知する必要があります。

Animator をアタッチするプロセスのプロセス ID を取得するには、ps やその他の同等なシステムコマンドを使用します。プロセス ID の確認後、そのプロセス ID を使用して、次のコマンドで Animator を起動します。

anim process_id

2.2.5 CBL_DEBUGBREAK ルーチン

CBL_DEBUGBREAK は実行時ライブラリルーチンの 1 つであり、COBOL コードの実行中に任意の位置に Animator をアタッチできます。このルーチンをプログラム内に記述しておけば、CBL_DEBUGBREAK が呼び出された行で Animator がプログラムのデバッグを開始します。

CBL_DEBUGBREAK ルーチンの詳しい使用方法については、『ライブラリルーチン』 の章を参照してください。

2.2.6 CBL_DEBUG_START ルーチンと CBL_DEBUG_STOP ルーチン

CBL_DEBUG_START および CBL_DEBUG_STOP は、ランタイムライブラリルーチンです。COBOL コードの実行時に、さまざまな位置で Animator のアタッチとデタッチが可能です。このルーチンは、リモートおよびクロスセッションデバッグで使用するためのものですが、ローカルなアニメート処理(local animation)の制御にも使用できます。

2.2.7 画面スワップ用の画面サイズ指定

Animator がプログラムを実行する際に、実行されるプログラムが端末入出力を行う可能性があります。Animator とプログラムの両方が端末を使用するにもかかわらず、使用可能な端末が 1 つのみの場合は、Animator はプログラムの出力をバックグラウンドの仮想画面として保持します。F2 キー (F2=View) を押すと画面がスワップされ、仮想画面が表示されると同時に Animator がバックグラウンドに隠れます。また、ステップやズームなど一部の処理の実行中には、この画面スワップが Animator 自体によって実行されます。

仮想画面のサイズは、デフォルトでは 24 行です。Animator の起動前に LINES 環境変数を設定すれば、仮想画面のサイズを変更できます。たとえば、次のように設定します。

export LINES=40
anim program.int

LINES には、実際の画面の行数を超える値は設定しないでください。

環境変数の詳細については、『Server Express ユーザガイド』 の付録、『環境変数』 を参照してください。

2.2.8 aixterm 画面の余白部分について

AIX システムの aixterm 端末では、ウィンドウ枠と表示テキストの間に余白が表示されます。この余白部分は常に現行の背景と同じ色になります。Animator の使用時には、実行している機能 (データ項目の照会など) に応じて背景色が変化し、それに応じて端末の余白部分の色も変更されます。余白部分の色の変更を抑制するには、.Xdefaults ファイル内に次のように余白の幅を 0 に設定して、余白を削除します。

aixterm*internalBorder:0

2.2.9 .aif ファイルと Animator

Animator では、プログラムに設定された区切り点と監視対象の情報を保存できます。したがって、以前にデバッグしたプログラムを Animator にロードすると、前回のデバッグセッションと同じ区切り点と監視対象が復元されます。区切り点と監視対象の設定に関する情報は、セッション情報ファイルに保存されます。このファイルは拡張子 .aif を持ち、通常は .aif ファイルと呼ばれます。区切り点と監視対象については、『Animator の操作』 の章で詳しく説明します。

Animator に .aif ファイルの保存とロードを実行させるには、COBAIF 指令を使用します。この Animator 指令の詳細については、『Animator 指令』 の章を参照してください。

Animator が .aif ファイルの検索や作成を行うディレクトリは、$COBAIF 環境変数で指定できます。詳細については、『Server Express ユーザガイド』 の付録、『環境変数』 を参照してください。

Animator が .aif ファイルのロードや保存を行うのは、anim (または anim_t) で起動された場合のみです。次の場合には、セッション情報ファイルのロードや保存は実行されません。

2.3 プリプロセッサのデバッグ

プリプロセッサをデバッグするには、Animator を CBL_DEBUGBREAK ルーチンで起動する必要があります。プリプロセッサのソースコード内の適切な位置に CBL_DEBUGBREAK の呼び出しを記述します。このルーチンが呼び出されると Animator が起動し、プリプロセッサにアタッチされます。

2.4 混合言語デバッグ

混合言語のプログラミングを行うには Animator のほか、使用している非 COBOL 言語用のシステムデバッガが必要です。COBOL プログラムは Animator でデバッグし、別プロセスで動作している非 COBOL プログラムにはシステムデバッガを使用します。

COBOL プログラムと非 COBOL プログラムの両方をデバッグ用にコンパイルした後、COBOL プログラムを使用して Animator を起動します。Animator を起動するコマンドには、次のように MIXEDLANGDEBUG 指令を指定します。

anim prog mixedlangdebug 

: MIXEDLANGDEBUG 指令を指定した場合は、デバッグできるプログラムは .int ファイルだけに限定されます。


プログラムは、通常どおりステップ実行できます。COBOL プログラムから非 COBOL プログラムが呼び出されるたら、他の端末または X ウィンドウに移ります。実行中のプログラムのプロセス ID を grep などのシステムコマンドで取得します。

取得したプロセス ID を指定してシステムデバッガを起動します。システムデバッガのコマンドを使用して、呼び出された非 COBOL プログラムに制御が移った時点でデバッガを停止させます。続いて Animator が動作している端末または X ウィンドウから、非 COBOL プログラムの呼び出しにステップインします。

システムデバッガが動作している端末または X ウィンドウに戻ります。デバッガは呼び出されたプログラム内で停止しており、区切り点の設定やデータ項目の値の参照などのデバッグ操作を必要に応じて実行できます。


: システムデバッガの使用方法については、使用しているシステムのマニュアルを参照してください。本書では、システムデバッガの使用方法には触れません。


2.4.1 呼び出し可能な共有オブジェクトの混合言語デバッグ

複数の言語によるアプリケーション開発で、デバッグすべき非 COBOL オブジェクトから他の非 COBOL 共有オブジェクトが呼び出される場合には不都合が生じます。システムデバッガで呼び出し可能共有オブジェクトに区切り点を設定するには、そのオブジェクトがロードされていることが前提になるからです。

そのような場合にプログラムをデバッグするには、mF_cso_loaded() 関数に区切り点を設定します。この方法を使用すると、共有オブジェクトがランタイムシステムによってロードされるタイミングや、メモリからアンロードされるタイミングを知ることができます。呼び出し可能共有オブジェクトがロードされたことが確認できれば、区切り点を設定できます。

mF_cso_loaded() 関数は、呼び出し可能共有オブジェクトがロードまたはアンロードされるときに呼び出されます。この関数は 2 つの引数を取ります。最初の引数にはロードまたはアンロードされる呼び出し可能共有オブジェクトの名前を指定し、2 番目の引数には、ロードする場合は 0 を、アンロードする場合は 0 以外の値を指定します。

2.5 マルチスレッドプログラムのデバッグ

ここで説明する内容は、読者がマルチスレッドプログラムの開発に通じていることを前提としています。マルチスレッドプログラム開発に関する詳細は、『Multi-threaded Programming』 を参照してください。

マルチスレッドプログラムは Cob -t フラグを使用してコンパイルします。プログラムを実行するには、次のようにマルチスレッド用ランタイムシステムのトリガ cobrun_t を使用し、Animator 起動用の実行時スイッチ (+A) を設定します。

cobrun_t +A program

または、次のコマンドで Animator を起動します。

anim_t program

cobrunanim、および cobanim には、それぞれ対応するマルチスレッド版のトリガが存在します。すなわち、cobrun_tanim_t、および cobanim_t です。

Animator が起動すると、View Threads 機能を使用して複数のスレッドを表示できます。マルチスレッドアプリケーションのデバッグに使用できる機能については、『Animator の操作』 の章を参照してください。

コアファイルデバッグ、JIT デバッグ、および動的アタッチメントデバッグは、マルチスレッドプログラムにも前述した方法で実施できます。ただし、使用するトリガの末尾に _t を付ける必要があります。

2.5.1 マルチスレッドプログラムと Animator

マルチスレッドプログラムをデバッグする場合、Animator は次の 2 通りの方法で起動できます。

MULTITHREAD 指令を指定して起動した場合に、Animator はシングルスレッド版のランタイムシステムで動作しますが、アニメート対象のプログラムにはマルチスレッド環境が提供されます。この方法はマルチスレッド版ランタイムシステムによる処理負荷を伴わないため、Animator のパフォーマンス (処理速度) の低下を回避できます。ただし、シングルスレッド版とマルチスレッド版の 2 つのランタイムシステムをシステムのメモリ空間にロードするため、MULTITHREAD 指令を使用するとオペレーティングシステム全体のパフォーマンスに影響を与える可能性があります。

末尾に _t が付いたコマンドで Animator を起動すると、Animator とアニメート対象プログラムの両方がマルチスレッド版ランタイムシステムで動作します。この場合、Animator とプログラムはスレッドの状態情報を保持するために必要なあらゆるシステムリソースを使用し、それが両者のパフォーマンスを低下させる可能性があります。その一方で、オペレーティングシステムは 2 つのランタイムシステムの共有ライブラリに、同じコード空間を充てることができます。したがって、この方法は MULTITHREAD 指令に比べ、メモリの利用効率に優れています。

上記の 2 つの方法の使いわけについては、明確な基準はありません。一般的に言えば、処理速度を優先する場合には MULTITHREAD 指令を、メモリの利用効率を優先する場合には _t 付きのコマンドを使用します。

Animator 指令の詳細については、『Animator 指令』 の章を参照してください。

2.6 CGI プログラムのデバッグ

Animator を 次のいずれかの方法で使用すると、CGI プログラムもデバッグできます。

CGI プログラムのデバッグ方法の詳細については、『インターネットアプリケーション』『インターネットプログラムのビルド』 の章にある 『アプリケーションのデバッグ』 の項を参照してください。

2.7 クロスセッションデバッグ

クロスセッションデバッグとは、デバッグ対象プログラムが実行されているコンソールと異なるコンソールで Animator を使用するデバッグ手法です。この方法は動的アタッチによるデバッグに似ていますが、クロスセッションデバッグでは最初に Animator を起動して待機させます。その後、次のいずれかの条件を満たす COBOL プログラムを起動すると、そのプログラムに Animator がアタッチされます。

次のいずれかの方法で Animator プロセスとプログラムを関連付けます。

COBANIMSRV 環境変数の使用

COBANIMSRV 環境変数を使用して、Animator プロセスとデバッグするプログラムのプロセスに一意の識別子を定義することもできます。これにより、Animator は識別子が一致するプログラムのみをデバッグします。たとえば、コンソールセッションで次のように入力します。

export COBANIMSRV=myid

この結果、myid が Animator とプログラムを関連付ける識別子として定義されます。続いて、次のコマンドで Animator を起動します。

cobanimsrv

Animator は、識別子が一致する COBOL プログラムが起動されるまで待機します。さらに、他のコンソールセッションで次のように入力します。

export COBANIMSRV=myid
cobrun prog1.int

prog1.int が起動すると、一意の識別子、 myid が Animator の識別子と一致するため、そのプロセスに Animator がアタッチされます。最初に使用したコンソールセッションに Animator のメイン画面が表示され、prog1.int の 1 行目にカーソルが位置します。

同じディレクトリの使用

デバッグするプログラムを実行するディレクトリと同じディレクトリから Animator を起動した場合は、デバッグ対象のプログラムが、待機状態の Animator プロセスにアタッチされます。

たとえば、コンソールに次のように入力します。

cd /home/user/program/debug
cobanimsrv

これにより、Animator は /home/user/program/debug ディレクトリでプログラムが起動されるまで待機します。続いて、他のコンソールセッションで次のように同じディレクトリでプログラムを開始したとします。

cobrun /home/user/program/debug/prog1.int

この結果、prog1.int は待機中の Animator プロセスにアタッチされます。Animator のメイン画面が表示され、prog1.int の 1 行目にカーソルが位置します。

CBL_DEBUG_START と CBL_DEBUG_STOP の使用

このルーチンにより、デバッグのオン/オフを自由に切り替えることができ、Animator プロセスの停止、再起動を行わずに、複数のプログラムをデバッグできます。まず、cobanimsrv コマンドでセッションを1 つ起動します。2 番目のセッションで COBANIMSRV 環境変数の値が異なるプログラムを実行します。異なる変数を設定しない場合は、別のディレクトリでプログラムを実行します。このプログラムはアニメートされずに通常で起動します。

CBL_DEBUG_START への呼び出しが、Animator プロセスの COBANIMSRV 環境変数の値と一致する識別子のパラメータに遭遇した場合、あるいは識別子のパラメータが設定されていない場合、その呼び出しは同じディレクトリで実行し、その後、そのプログラムに Animator がアタッチされます。

たとえば、1 つのセッションに次のように入力します。

export COBANIMSRV=myid

ここで、myid は一意の識別子で、Animator とプログラムを対応させます。 次のようにコマンドを入力し Animator を起動します。

cobanimsrv

Animator は、同じ識別子の COBOL プログラムが起動するまで待機します。別のセッションに次のように入力します。

cobrun prog1.int

prog1.int プログラムはアニメート処理なしで実行を開始します。CBL_DEBUG_START への呼び出しは次の記述に遭遇します。

call CBL_DEBUG_START using by value     flags, timeout,
                           by reference "myid", 
                           returning    status-code

一意の識別子 myid が Animator の識別子と一致しているため、Animator がこのプログラムにアタッチされます。一番目のセッションでは、Animator の主画面が表示され、CBL_DEBUG_START 呼び出しを含む prog1.int の行の上にカーソルがあります。

CBL_DEBUG_STOP 呼び出しを発行すると、デバッグを停止(stop)または中断(suspend)できます。

CBL_DEBUG_START 呼び出し、および CBL_DEBUG_STOP の呼び出しを使用して、リモートとローカルのアニメート処理のオン/オフを切り替えることもできます。これらの呼び出しについては、Library Routines で詳細に説明しています。


注: CBL_DEBUG_START および CBL_DEBUG_STOP でのクロスセッションのアニメート処理の制御は、次のいずれかで行います。

Animator プロセスと対象プログラムのCOBANIMSRV 環境変数が一致すると、Animator は、対象プログラムのアニメートを最初の CBL_DEBUG_START 呼び出しに遭遇した時ではなく、即座に開始します。


2.8 リモートデバッグ

Net Express を使用して、UNIX システムでプログラムをデバッグすることができます。この機能を使用すれば、Server Express で UNIX 向けに開発したプログラムや、Net Express の UNIX オプションを使用して UNIX システムに配布したプログラムをデバッグできます。 リモートデバック機能は、Net Express Version 3.0 以降で提供されています。リモーデバックでは、ローカルマシンは Net Express の PC で、リモートマシンが UNIX ワークステーションです。もちろん、UNIX セッションを実行する Telnetウィンドウを使用して、同じ PC 上で両方のセッションを実行できます。

リモートデバックには、次の 2 つの方法があります。

animserv コマンドの使用

UNIX 上のプログラムを Net Express からリモートデバッグするには、使用する UNIX システム上でデバッグサーバを起動する必要があります。デバッグサーバには 2 種類あり、シングルスレッドアプリケーションとマルチスレッドアプリケーションの両方をデバッグできます。デバッグサーバを起動するコマンドは次のとおりです。

デバッグサーバのバージョンとデバッグするアプリケーションの種類との関係は、特に厳密ではありません。すなわち、animserv32animserv64 を起動してマルチスレッドのアプリケーションをデバッグしたり、animserv32_tanimserv64_t を起動してシングルスレッドのアプリケーションをデバッグすることも可能です。ただし、ブレークキーの検知のような非同期イベントの処理や、実行中のブレークポイントの設定などには animserv32_t または animserv64_t を起動する方がシステムリソースの使用効率の点で望ましいと言えます。

デバッグサーバは、次のコマンドで起動します。

animservxx[_t] [auto] [port(nnnn)]

または

animservxx[_t] [auto] [port=nnnn]

パラメータの内容は、次のとおりです。

_t animserv のマルチスレッド版を要求します。/TD>
xx 32 ビットシステムで起動する場合は 32、64 ビットシステムで起動する場合は 64 を指定します。
auto animserv がアドバンスドモードで動作することを指定します。1 つのセッションで順次実行される複数のプログラムのアニメートを行います。s
nnn ポートの動的割り当てを行わない場合に、使用するポートの番号を指定します。同じマシンを使用してリモートデバッグを並行して実行する場合以外は、この指定を省略できます。ポート番号として指定できるのは 1025 以上の固有値です。省略するとポート番号は自動的に割り当てられ、端末に表示されます。Net Express の〔アニメート設定〕ダイアログボックスには、このポート番号を入力します。詳細については、Net Express のマニュアルを参照してください。

注: AUTO を指定して 各種の animserv コマンドを使用すると、バックグラウンドでデバッグサーバを起動することはできません。


標準のリモートデバッグ

標準のリモードデバッグは次の手順で行います。

  1. UNIX ワークステーション上で、AUTO パラメータを指定せずに、4 つの animserv コマンドのいずれかを使用して、Server Express のデバッグサーバを起動します。デバッグサーバがリッスンするポート番号を指定することもできます。指定しない場合は Server Express が代わりに割り当てます。

  2. PC 上で、Net Express IDE を使用して Animator を起動します。リモートワークステーションの名前 (または IP アドレス) 、獲得したあるいはステップ 1 で指定したポート番号、およびリモートワークステーションでデバッグするプログラムの場所を指定します。Net Express での手順についての詳細は、 Net Express のヘルプを参照してください。

アドバンスドリモートデバッグ

アドバンスドリモートデバッグは次の手順で行います。

  1. UNIX ワークステーション上で、AUTO パラメータを指定して、4 つの animserv コマンドのいずれかを使用して、Server Express のデバッグサーバを起動します。デバッグサーバがリッスンするポート番号を指定することもできます。指定しない場合は Server Express が代わりに割り当てます。

  2. PC上で、ローカル (Net Express) の Animator をコマンド行で起動します。ロードする Net Express プロジェクト、デバッグ対象のセッションを特定する一意の文字列、リモートワークステーションの名前 (または IP アドレス)、および獲得したあるいはステップ 1 で指定したポート番号を指定します。コマンドの詳細については、Net Express のヘルプを参照してください。Net Express IDE が起動し、プロジェクトがロードされ、表示されます。

  3. この他の UNIX セッションの場合、Net Express のコマンド行に指定された一意の文字列と同じ値に設定された識別子の文字列を持つ CBL_DEBUG_START の呼び出しを含むプログラムを起動します。

  4. Net Express Animator は、CBL_DEBUG_START への呼び出しに遭遇すると、ソースコードウィンドウをオープンしてから起動します。これで、ローカルの Net Express IDE から通常の方法でコードをデバッグできます。

  5. CBL_DEBUG_STOP に遭遇すると、Animator はプログラムからデタッチされ、現在のプログラムまたは別のプログラムで次の CBL_DEBUG_START の呼び出しに備えて自身を再初期化します。

ステップ 3 から 5 または 4 から 5 を繰り返して、一連のプログラムまたはプログラムの一部をデバッグします。デバッグを停止するには、Animator プロセスを終了することを示すフラグを立てて、最後の CBL_DEBUG_STOP 呼び出しを発行します。この時点で Net Express を終了する必要があります。オープンのままにしておいたり、引き続きデバッグを行おうとすると、その結果は予想できなくなります。

Net Express のメニューオプションを使用してデバッグの開始、終了を行うことはできません。UNIX Animator プロセスが Net Express IDE を制御できるようにする必要があります。

アドバンスドリモートでアニメートを行うには、CBL_DEBUG_START 呼び出しおよび CBL_DEBUG_STOP 呼び出しをコードに記述する必要があります。これらの呼び出しを使用して、クロスセッションとローカルのアニメート処理のオン/オフを切り替えることもできます。

single シングルスレッド版のランタイムシステムを使用します。このパラメータを指定して起動したデバッグサーバは、animserv32animserv64 と実質的に同じです。 multi マルチスレッド版のランタイムシステムを使用します。

2.9 COBOL サービスのデバッグ

Server Express と Enterprise Server が同じマシンで稼動しているかぎり、Enterprise Server にディプロイしている COBOL サービスのデバッグを行うことができます。デバッグには次の 2 つの方法があります。

COBOL サービスとEnterprise Server の詳細は、Distributed Computingの 第 1 部から第 3 部を参照してください。 CBL_DEBUGBREAK を使用したデバッグのチュートリアルについては、Getting StartedDebugging a Service の章を参照してください。

CBL_DEBUGBREAK でのサービスのデバッグ

Enterprise Server のデフォルトの ESDEMO を使用して、CBL_DEBUGBREAK でサービスをデバッグするには、次のステップを実行します。

  1. サーバの ESDEMO を起動します。起動は、Web interface Enterprise Server Administration を使用する、あるいはcasstart コマンドを使用するのいずれでも可能です。詳細は、Enterprise Server のマニュアルを参照してください。
  2. プログラムの手続き部(Procedure Division)の先頭に次の行を挿入します。
    call "CBL_DEBUGBREAK"
  3. 例えば、次のようなコマンドでプログラムをコンパイルします。
    cob -ia myprog.cbl
  4. ESDEMO にサービスをディプロイします。既にディプロイしている場合は、再ディプロイします。(再ディプロイするには、ディプロイされているサービスを削除する必要があります)。To deploy a service interface using the deploy tool および To redeploy a service interface のヘルプ項目を参照してください。また、プログラムの .cbl および .cpy ソースファイル、および デバッグに必要な .idy ファイルもディプロイしてください。
  5. 使用中のサービスに対するクライアントプログラムを作成します。To generate a COBOL client from a Web service mapping を参照してください。
  6. クライアントプログラムを実行し、何か入力します。
  7. CBL_DEBUGBREAK の呼び出しを検出した (a CBL_DEBUGBREAK has been detected)というメッセージが表示されたら、Yes をクリックします。Server Express Animator が起動し、デバッグ準備のできたプログラムのソースが表示されます。これで、ディプロイされたサービスを通常の方法でデバッグできます。

サービスのデバッグが終了した場合は、CBL_DEBUGBREAK を呼び出す行を忘れずに削除してください。

呼び出し文を挿入するには、プログラムをディプロイする前に、コンパイラの方言 INITCALL"CBL_DEBUGBREAK" でプログラムをコンパイルするという方法もあります。

cassi コマンドでのサービスのデバッグ

Enterprise Server のデフォルトの ESDEMO を使用して、cassi コマンドでサービスをデバッグするには、次のステップを実行します。

  1. サーバの ESDEMO を起動します。起動は、Web interface Enterprise Server Administration を使用する、あるいはcasstart コマンドを使用するのいずれでも可能です。詳細は、Enterprise Server のマニュアルを参照してください。
  2. サーバの ESDEMO でデバッグサービス実行プロセスを起動します。次のように入力します。 
    cassi -a -rESDEMO
  3. 例えば、次のようなコマンドでプログラムをコンパイルします。
    cob -ia myprog.cbl
  4. ESDEMO にサービスをディプロイします。既にディプロイしている場合は、再ディプロイします (再ディプロイするには、ディプロイされているサービスを削除する必要があります)。To deploy a service interface using the deploy tool および To redeploy a service interface のヘルプ項目を参照してください。 デバッグに必要な、プログラムの .idy ファイルもディプロイしてください。
  5. 使用中のサービスに対するクライアントプログラムを作成します。 To generate a COBOL client from a Web service mapping のヘルプ項目を参照してください。
  6. クライアントプログラムを実行し、何か入力します。
  7. サービスが入力されると直ちに、Server Express Animator が起動し、デバッグの準備ができたプログラムのソースが表示されます。これで、ディプロイされたサービスを通常の方法でデバッグできます。

.cbl および .cpy ファイルをディプロイするか ESDEMO の構成にファイルの場所をポイントする COBCPY 環境変数を設定してください。Enterprise Servers に対する環境変数の設定については、Enterprise Server の Configuration and Administration GuideConfiguration の章の Environment Variables の節を参照してください。

デバッグサービス実行プロセスで実行するいずれのサービスもデバッグされます。つまり、サービスが入力されると直ちに Server Express Animator が起動します。

2.10 エラーメッセージ

構文上の問題を含まないプログラムでも、中間コードにコンパイルして実行すると問題が発生し、ランタイムシステムによってエラーメッセージが返される場合があります。プログラムのアニメート中に発生した実行時エラーは、画面の最下行に表示されます。生成される可能性がある実行時エラーの一覧と形式については、『エラーメッセージ』 を参照してください。

2.11 コピーファイルと情報ファイルの検索先

COBOL プログラムのコンパイル時には、プログラム本体のソースファイルと同じディレクトリ内でコピーファイルが検索されます。COBCPY 環境変数を使用すれば、このディレクトリでコピーファイルが見つからなかった場合に、COBOL コンパイラが検索するディレクトリを指定できます。Animator の使用時には、コンパイル時にコピーファイルが見つかったディレクトリが最初に検索されます。その結果、コピーファイルが見つからなければ、続いて COBCPY 環境変数で指定された各ディレクトリが検索されます。

COBCPY 環境変数を設定するには、次のように記述します。

COBCPY=/usr/group/sharedcopy:/usr/mydir/mcpy
export COBCPY

プログラムのアニメート時には、対象のプログラムと同じディレクトリ内で Animator 情報ファイル (.idy ファイル) が検索されます。COBIDY 環境変数を使用すれば、このディレクトリで .idy ファイルが見つからなかった場合に、Animator が検索するディレクトリを指定できます。COBIDY 環境変数を設定するには、次のように記述します。

COBIDY=:/usr/myapp/idyfiles:/usr/common/idyfiles
export COBIDY


Copyright(C) 2001 Micro Focus. All rights reserved.
本書、ならびに使用されている固有の商標と商品名は国際法で保護されています。

前ページへはじめに Animator の操作次ページへ