演習 2.3: デバッグ
EGL デバッガーを使用すると、変数、プログラム、および PageHandler をモニターすることができるので、コードに関する問題を見つけるのに便利です。デバッグする場合には、プログラム、PageHandler、または関数内にブレークポイント を設定します。ロジック・パーツがブレークポイントで一時停止するので、変数を調べて、その関数がどのように動作しているか確認することができます。デバッグを実行することにより、エラーの発生場所や変数値が変更されている場所を的確にトレースできます。そのため、デバッグは、問題がどこで発生しているのか見つけるのに役立ちます。この演習では、「演習 1.4: レコード」で作成した RecordTest.jsp ページで問題が発生しているものとして、ページのデバッグの練習をします。
EGL アプリケーションのデバッグについて詳しくは、ヘルプの「EGL デバッガー」を参照してください。
コードへのブレークポイントの設定
ブレークポイントは、コードの任意の実行可能行に設定することができます。例えば、以下のような行に設定することができます。
- myVariable1 = myVariable2 + myVariable3;
- myFunction(myVariable4);
- move myRecord1 to myRecord2;
ブレークポイントは、データ・パーツ定義内、変数の作成時、またはロジック・パーツの先頭あるいは最後に設定することはできません。例えば、コードの以下のような行には、ブレークポイントを設定することができません。
- function myFunction(myVariable4 int)
- end
- myVariable5 int;
- record myRecord type basicRecord
- package myPackage;
以下のステップでは、RecordTest.egl ファイルにブレークポイントを追加します。それから、それらのブレークポイントを使用して、サーバー上でファイルをデバッグします。
- RecordTest.egl ファイルを開く。このファイルは、EGLSource フォルダー内の pagehandlers パッケージから開くか、RecordTest.jsp ファイルを開いてからそのページ・コード・ファイルとして開きます。
- RecordTest.egl ファイルで、move " " to personInput; 行の左側のエディターのグレー・エリア内をダブルクリックして、ブレークポイントをこの行に設定する。
ブレークポイントを示す青のドットがコードの行の左側に表示されます。ページをデバッグ・モードで実行すると、このブレークポイントによって、move " " to personInput; 行の直前で実行が一時停止します。
青のドットが表示されない場合には、EGL エディターの左側、つまり、move " " to personInput; 行のすぐ左側にあるグレーの枠をクリックしていることを確認してください。RecordTest.egl ファイルは次のようになります。

- 以下のそれぞれの行にブレークポイントを設定する。
- move " " to personInput.Address;
- move personInput to personOutput;
- personInput.Address.City = "Any City"
アプリケーションのデバッグの準備
EGL ロジック・パーツをデバッグするには、EGL アプリケーションをデバッグするように構成されているサーバー上でそのロジック・パーツを実行する必要があります。以下のステップでは、EGL アプリケーションをデバッグするサーバーをセットアップします。
- サーバー・ビューを開く。WebSphere Application Server v6.0 がビュー内のリストに表示されます。このサーバーは、前の EGL チュートリアルでカスタマイズしたサーバーです。
- サーバーを実行していない場合には、サーバーを開始する。
- サーバー・ビュー内で、「WebSphere Application Server v6.0」をクリックする。
- サーバー・ビュー上部にある「開始」ボタン
をクリックする。ワークベンチ上部にある外観の似たボタンと間違えないようにしてください。
- サーバー・ビュー内のリストでサーバーの状況が「始動済み 」と表示されるまで待つ。
- サーバーが始動したら、サーバー・ビューで「WebSphere Application Server v6.0」を右クリックし、ポップアップ・メニューから「EGL デバッグを使用可能/使用不可にする」をクリックする。「EGL デバッグ」ウィンドウが開き、「サーバーで EGL デバッグが使用可能になりました (EGL debugging has been enabled on the server)」というメッセージが表示されます。
「EGL デバッグ」ウィンドウに「サーバーで EGL デバッグが使用不可になりました (EGL debugging has been disabled on the server)」というメッセージが表示された場合は、既にサーバーが EGL アプリケーションをデバッグするようにセットアップされていたものと考えられます。その場合には、「OK」をクリックしてステップ 3 をもう一度実行し、再びデバッグを使用可能にしてください。
ポップアップ・メニューに「EGL デバッグを使用可能/使用不可にする」が表示されない場合は、サーバーが始動されていません。サーバーを始動してから、再試行してください。
- 「EGL デバッグ」ウィンドウで「OK」をクリックする。
- 再び、「WebSphere Application Server v6.0」を右クリックし、ポップアップ・メニューから「再始動」>「デバッグ」をクリックする。サーバーがデバッグ・モードで再始動します。
- サーバー・ビュー内のリストでサーバーの状況が「デバッグ中 (Debugging) 」と表示されるまで待つ。これで、サーバーで EGL ファイルをデバッグする準備ができました。
- プロジェクト・ナビゲーター・ビューで、RecordTest.jsp ページを右クリックし、ポップアップ・メニューから「デバッグ」>「サーバーでデバッグ」をクリックする。「ビルド記述子の選択 (Select a Build Descriptor)」ウィンドウが開きます。
- 「ビルド記述子の選択 (Select a Build Descriptor)」ウィンドウで「EGLWebWebBuildOptions (EGLWeb/EGLSource/EGLWeb.eglbld)」を選択する。
- 「このプログラムのデフォルト・デバッグ・ビルド記述子として設定 (Set as default debug build descriptor for this program)」チェック・ボックスを選択する。
- 「OK」をクリックする。
通常どおり、Web ページが Web ブラウザーで開く。
- Web ブラウザーで、「Initialize record」ボタンをクリックする。「パースペクティブ切り替えの確認」ウィンドウが開くことがあります。
「パースペクティブ切り替えの確認」ウィンドウに、デバッグ・パースペクティブへ切り替えるかどうかたずねるメッセージが表示されます。このウィンドウおよびメッセージが表示されず、ワークベンチからそのままデバッグ・パースペクティブへ画面が切り替わる場合は、メッセージを表示せずにパースペクティブに切り替えるようにワークベンチが設定されています。ワークベンチからパースペクティブへ切り替わる前にメッセージが表示されるようにする場合には、「設定」ウィンドウで該当のオプションを変更することができます。
- 「パースペクティブ切り替えの確認」ウィンドウが表示されたら、「はい」をクリックしてデバッグ・パースペクティブへ移動します。
デバッグ・パースペクティブの使用
デバッグ・パースペクティブには、EGL チュートリアルでこの時点まで使用してきた Web パースペクティブとは異なる組み合わせのビューが用意されています。「ウィンドウ」>「パースペクティブを開く」>「その他」をクリックして、新規パースペクティブを開くことができます。また、すでに開いているパースペクティブを、ワークベンチの右上にあるパースペクティブのアイコンをクリックして、切り替えることもできます。
以下では、デバッグ・パースペクティブのビューの一部について説明します。
- 変数
- 変数ビューには、アプリケーションの変数のリストとそれらの現行値が表示されます。この例では、変数ビューには、RecordTest PageHandler 内の 2 つのレコード変数とそれらの値が表示されます。
- ブレークポイント
- ブレークポイント・ビューには、アプリケーションに追加したすべてのブレークポイントのリストが表示されます。この例では、この演習の前半で PageHandler に追加した 4 つのブレークポイントのリストが表示されます。
- デバッグ
- デバッグ・ビュー (デバッグ・パースペクティブと混同しないようにしてください) には、アプリケーション内のスレッドのリストが表示されます。それらのスレッドは、アプリケーションの一部としてサーバーが実行するアクティビティーのようなものであると考えることができます。このビューは、いつ、アプリケーションがブレークポイントで一時停止されたかが表示されます。
- サーバー
- サーバー・ビューは、Web パースペクティブで使用したサーバー・ビューと同じものです。すべてのビューと同様、どのパースペクティブ内に表示されているかに関係なく、同じように機能します。
- エディター
- エディター・ビューには、Web パースペクティブと同じように、ユーザーが開いた EGL、JSP、またはその他のファイルが表示されます。この時点では、エディター・ビューには RecordTest.egl ファイルが表示されており、Web ブラウザーには RecordTest.jsp ページが表示されています。
現在、サーバーは、initializeRecord() 関数に追加したブレークポイントで一時停止しています。エディター・ビューでは、次のピクチャーのように、ブレークポイントを示す青のドットが青の矢印に変わり、ブレークポイントで一時停止されていることが示されます。
以下のステップでは、変数ビューで変数を表示して変更し、ブレークポイントで一時停止されている箇所からアプリケーションを再開します。実際の EGL アプリケーションでは、この手法を使用して変数およびアプリケーションの進行状況をモニターすることができますが、この例では、その使用方法を確認するためにデバッガーを試してみるだけにします。
- 変数ビューで、「RecordTest」>「personInput」>「Name」、および「RecordTest」>「personInput」>「Address」を展開する。
変数ビューは次のようになります。

personInput レコード変数の各フィールドの値が、変数ビューに表示されます。アプリケーションは personInput.Address.City = "Any City"; 行が実行される前にブレークポイントによって一時停止されているので、変数内の最初の 3 つのフィールドのみに値が割り当てられています。アプリケーションを再開すると、initializeRecord() 関数が引き続き実行され、残りのフィールドに値が割り当てられます。
- 変数ビューで、「Street =」"「123 Maple Street」をダブルクリックする。「値の設定」ウィンドウが開きます。
- 「値の設定」ウィンドウで、フィールドの現行値を「456 Elm Lane」に変更する。「値の設定」ウィンドウは次のようになります。

- 「OK」をクリックする。
変数ビューの「Street」フィールドの値が変わります。手動で変更されたことが分かるように、赤色で強調表示されます。
- 「デバッグ (Debug)」ウィンドウで「再開」ボタン
をクリックする。アプリケーションで initializeRecord() 関数が続行されます。ページが、通常どおり実行したときと同じように Web ブラウザーで更新されます。ただし、ここでは、変更した値が表示されるようになります。

- ブレークポイントで停止して変数値を変更するというように、デバッグ・パースペクティブをもう少し操作してみる。
サーバーを通常モードに戻す
デバッグが完了したら、サーバーを通常モードに戻します。
- サーバー・ビューで「WebSphere Application Server v6.0」を右クリックし、ポップアップ・メニューから「再始動」>「開始」をクリックする。サーバーが通常モードで再始動します。
アプリケーションをデバッグしたいときにはいつでもサーバーをデバッグ・モードに戻すことができます。
「モジュール 3: EGL によるビジネス・ロジックの管理」に進んでください。