Javaアプレット(34) Eclipseのデバッグ機能を使う

どうも思ったように動かないので、Eclipseのデバッグ機能を使って実行時に内部の値がどうなっているか調べてみましょう。
まず、エディターのビューで止めたい行の行番号の左側をダブルクリックします。すると小さな丸が現れます。これをブレークポイントと呼びます。
図:ブレークポイント
【図45 ブレークポイント】
そして、リボンの実行ボタンの左横にあるデバッグボタンを押します。ちなみにデバッグのバグ(バッグ)は甲虫(bug)のことです。
図:デバッグボタン
【図46 デバッグボタン】
するとEclipseのビューが入れ替わり、デバッグの画面になります。これを「デバッグ」パースペクティブと呼びます。リボン右上の「デバッグ」パースペクティブボタンが押された状態になっています。元に戻すには、その左の「Java」パースペクティブホタンを押せばいいだけです。
図:「デバッグ」パースペクティブ
【図47 「デバッグ」パースペクティブ】
このパースペクティブでは、左上にデバッグのビューがあり、実行中のスレッドが表示されています。左下にはエディタのビューがあり、設定したブレークポイントで止まったところが表示されています。右上の「変数」「ブレークポイント」「式」のビューで、ブレークポイントで止まった時点のプログラム内の値を調べることができます。右下のアウトラインのビューはエディタのビューに表示されているクラスのメンバやメソッドのアウトラインが示されます。
現在何手目を実行しているのか見たいので、「式」ビューの「add new expression」と書かれた欄に、何手目かを記録しているメンバ(変数)「moves」を入力してみましょう。
図:「式」ビュー
【図48 「式」ビュー】
movesは0であることが分かりました。その上のbm2は以前のデバッグで指定したもので、消さない限り残っています。式を消すには式の名前のところでマウスの右ボタンを押し、「除去」を選びます。今入力したのは「moves」という単独のメンバ名ですが、式を入れることも可能です。
3手目まで飛ばしたいので、デバッグビューの再生ボタンを押します。緑の三角のマークです。
図:再生ボタン
【図49 再生ボタン】
ここで異変に気付きました。
movesが2で止まったのです。0の次が2です。もう1回押したら、4になってしまうでしょう。3で止めたかったのです。ブレークポイントは if (turn == BLACK) の中なので、黒番で止まるはずですが、奇数手目で止まらないのは、movesとturnの関係がおかしそうです。
turnとmovesの設定は、メソッドmove()の中で、今回ブレークポイントを設定したcalcVectors()メソッドを呼び出した後に行っています。ということはturnの内容がおかしそうなので、「式」ビューにturnも入れてみます。turnは1でした。1が黒、2が白です。
分かりました。movesが2で止まっていますが、現在3手目の処理をしているのです。処理が終わってからmovesは3になるわけです。
さて、3手目まで来ているのが分かったので、気を取り直して先へ進みましょう。
(つづく)

カテゴリーJava

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。