サーブレットのデバッグ

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

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

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

 Step1:デバッグの準備

 サーブレットのデバッグを行う場合、まずはじめにブレークポイントを設定します。

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

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

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

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

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

 Step2:デバッグの起動

 Eclipseを利用したWebアプリケーションのデバッグでは、「デバッグ」ボタンからTomcatとWebアプリケーションを起動することで、ブレークポイントの設定された箇所で停止しデバッグを実行することができます。

① Tomcatの起動とページヘのアクセス
 Eclipseのツールバー内の「デバッグ」ボタンを押下しWebアプリケーションを起動します。

図 4.2.3: Tomcatの起動

 以下の図のように「デバッグモードで表示するかどうか」ダイアログが表示されます。「はい」を選択します。

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

 デバッグモードで起動するとブラウザで以下のURLにアクセスしようとします。
 http://localhost:8080/web_basic/GuessServlet

 しかし、本来表示されるはずのページが表示されずに処理が停止します。以下の図のようにタスクバーのEclipseが点滅します。

図 4.2.5: Tomcatの起動とWebアプリケーションへのアクセス

② デバッグ画面の表示
 点滅しているEclipseをクリックして表示すると、ブレークポイントの箇所で処理が止まっていることが確認できます。
 ここで右側のタブを選んで、デバッグ用のパースペクティブを表示します。

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

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

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

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

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

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

図 4.2.8: 変数cmdの値の確認

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

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

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

図 4.2.10: プログラムの再開

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

図 4.2.11: 入力画面の表示

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

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

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

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

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

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

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

図 4.2.14: 変数cmdの値の確認

⑧ プログラムの動きの確認
 ステップオーバーを利用して実行すると、今度は43行目の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のデバッグ