サーブレットのデバッグ

4.2 サーブレットのデバッグ

 本節では、以下の手順でサーブレットのデバッグについて解説していきます。プログラム全体の流れを管理する変数cmdの値がどのようになっているかを確認しながら、プログラムの動きを見ていきましょう。

 Step1:デバッグの準備
 Step2:デバッグの起動
 Step3:変数のデータとプログラムの動きの確認
 Step4:デバッグの終了

 Step1:デバッグの準備

 サーブレットのデバッグを行う場合、まずはじめにブレークポイントを設定します。また、デバッグ実行の場合でも通常の実行と同様に、Tomcatが起動している必要があります。

 ① ブレークポイントを設定するサーブレットを開く
 Eclipseのパッケージエクスプローラからデバッグを行うプログラムをクリックし、エディタビューを表示します。
 [web_basic]→[WEB-INF/src]→[ch04]→[GuessServlet.java]

図 4.2.1: デバッグ対象のサーブレットを表示

② ブレークポイントを設定する
 今回は29行目にブレークポイントを設定します。

図 4.2.2: サーブレットにブレークポイントを設定

③ Tomcatを起動
 Eclipseのツールバー内の「Tomcatの起動」ボタンを押下しTomcatを起動します。すでに起動済みの場合はスキップして次へ進んでください。

図 4.2.3: Tomcatの起動

 ブレークポイントの設定とTomcatの起動が完了したらデバッグの準備は完了です。

 Step2:デバッグの起動

 Eclipseを利用したWebアプリケーションのデバッグでは、ブラウザ画面からWebアプリケーションにアクセスすることで、ブレークポイントの設定された箇所で停止しデバッグを実行することができます。

① Webブラウザからページヘアクセス
 Webブラウザから以下のURLにアクセスします。
 http://localhost:8080/web_basic/GuessServlet

 Webブラウザからページヘアクセスすると、本来表示されるはずのページが表示されずに処理が停止します。以下の図のようにタスクバーのEclipseが点滅します。

図 4.2.4: Webアプリケーションへのアクセス

② デバッグ画面の表示
 点滅しているEclipseをクリックして表示すると以下の図のように「パースペクティブ切り替えの確認」ダイアログが表示されます。「切り替え」を選択します。

図 4.2.5: デバッグパースペクティブの切り替え

 デバッグ画面が表示されます。

図 4.2.6: デバッグ画面の表示

 Step3:変数のデータとプログラムの動きの確認

 デバッグが起動したら、通常のJavaプログラムと同様に変数ビューから変数データの確認や、ステップオーバーを利用してプログラムの流れを確認します。変数cmdの値がどのようになっているかを確認し、プログラムの動きを見てみましょう。

① 停止位置の確認
 デバッグを起動した直後の状態では、29行目が実行される直前で停止しています。

図 4.2.7: サーブレットの停止位置の確認

② 変数cmdの値の確認
 この状態で変数cmdの値を確認すると、「null」となっていることがわかります。

図 4.2.8: 変数cmdの値の確認

③ プログラムの動きの確認
 29行目をステップオーバーを利用して実行すると、if文の条件に当てはまり、ifブロック内の処理を行ないます。

図 4.2.9: ステップオーバー実行後の停止位置

④ 再開ボタンを押下しWeb画面を表示
 再開ボタンを押下し、停止していたプログラムを動作させます。

図 4.2.10: プログラムの再開

 このデバッグでは29行目以外はブレークポイントがないため、再開ボタンを押下することでWebページが表示されます。

図 4.2.11: 入力画面の表示

数字当てゲームのエラー表示

 数字当てゲームではセッションを利用しているため、一定の時間プログラムの処理を停止したままにしておくと、セッションタイムアウトしてしまい、実行結果画面にエラーメッセージが表示されることがあります。ご注意ください。

⑤ 数字を入力し送信ボタンを押下
 画面のテキストボックスに数字を入力し、送信ボタンをクリックすると、データを送信した状態でのデバッグを行うことができます。

図 4.2.12: 数字の入力とデバッグの起動

⑥ 停止位置の確認
 数字を入力しサーブレットにアクセスすると、再度ブレークポイントでプログラムが停止します。

図 4.2.13: サーブレットの停止位置の確認

⑦ 変数cmdの値の確認
 この状態で変数cmdの値を確認すると、「game」となっていることが確認できます。

図 4.2.14: 変数cmdの値の確認

⑧ プログラムの動きの確認
 ステップオーバーを利用して実行すると、今度は36行目のelse if文の条件に当てはまり、else ifブロック内の処理を行ないます。

図 4.2.15: ステップオーバー実行後の停止位置

 このように、通常のJavaプログラム同様、変数のデータの確認や、プログラムの流れが正しいかを判断することで、デバッグを行なっていくことができます。

 Step4:デバッグの終了

 デバッグを終了する場合は、ブレークポイントを解除し再開ボタンを押下することで、通常の動作に戻すことができます。

① ブレークポイントの解除
 29行目に設定されたブレークポイントを解除します。

図 4.2.16: ブレークポイントの解除

② 再開ボタンを押下
 再開ボタンの押下し、停止していたプログラムを通常の動作に戻します。

図 4.2.17: プログラムの再開

③ Webページの表示
 再開ボタンを押下した後でWebブラウザを選択すると、Webページが表示されます。

図 4.2.18: 判定結果の表示

 サーブレットのデバッグ方法をまとめると、次のようになります。

 ① サーブレット内の停止したい行にブレークポイントを設定する。
 ② Webブラウザから該当のサーブレットへアクセスする。
 ③ プログラムが①のブレークポイントで停止するので、ステップオーバーなどを使ってデバッグする。

 このように、デバッグの実行方法が異なるだけで、基本的には通常のJavaプログラムと同じようにデバックを行うことができます。

 次の節では、JSPのデバッグについて学習します。


NEXT>> 4.3 JSPのデバッグ