SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Eclipse 3.4からはじめるIDE入門

Eclipse 3.4を使ったデバッグとテスト~Eclipse 3.4 入門~

第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

Javaアプリケーションのデバッグ(3)

ステップイン、ステップリターン、ステップオーバー

 プログラムを1行ずつ実行するのがステップ実行です。Eclipseのステップ実行機能には「ステップイン」「ステップリターン」「ステップオーバー」があります。ステップインを実行すると、現在の行が呼び出しているメソッドがあればそこに入ります。ステップインしたメソッドから元に戻るにはステップリターンを選びます。ステップインする必要がなければ、ステップオーバーを実行することで次の行へ進みます。では、実際に試してみましょう。先ほどの状態から[ステップインのアイコン]をクリックします。

図11:[ステップインのアイコン]をクリック
図11:[ステップインのアイコン]をクリック

 ステップインによって、この行が呼び出しているHelloFuncクラスのコンストラクタ「new HelloFunc()」に入りますので、HelloFuncクラスを開いているエディタービューに現在行が示されます。

図12:HelloFuncクラスのエディタービューに現在行が移る
図12:HelloFuncクラスのエディタービューに現在行が移る

 しかし、HelloFuncクラスのコンストラクタは記述されていませんので、これ以上ステップインする意味はありません。先に進むためにステップリターンしましょう。[ステップリターンのアイコン]をクリックします。

図13:[ステップリターンのアイコン]をクリック
図13:[ステップリターンのアイコン]をクリック

 ステップリターンによって、HelloDebugクラスに戻ります。この行にはコンストラクタ「new HelloFunc()」の後に、メソッドを実行する「.sumArray(i)」がありますので、先ほどと同じ行が現在行になります。このメソッドに入るために、再度、ステップインしましょう。ステップインによって、HelloFuncクラスを開いているエディタービューのsumArrayメソッドの中に現在行が移ります。

図14:再度ステップインすると、HelloFuncクラスのsumArrayメソッドの中に現在行が移る
図14:再度ステップインすると、HelloFuncクラスのsumArrayメソッドの中に現在行が移る

 このメソッドをみると、整数配列pが引数として使われていることが分かります。そこで、変数ビューで整数配列「p」を開き、各要素の値を確認します。順に、624になっています。

図15:変数ビューで配列pの各要素の現在の値を確認
図15:変数ビューで配列pの各要素の現在の値を確認

 では、このメソッドの中で次の処理に進めつつ、配列pの各要素の値の変化を確認しましょう。ステップオーバーを2度行います。

図16:[ステップオーバーのアイコン]を2回クリック
図16:[ステップオーバーのアイコン]を2回クリック

 ステップオーバーを2度行うと、HelloFuncクラスのsumArrayメソッドにあるfor文の繰返しが進み、配列pの要素[0]の値が変化していることが変数ビューで分かります。

図17:変数ビューで配列pの各要素の値の変化を確認すると、要素[0]がsumArrayメソッドの中で変化していることが分かる
図17:変数ビューで配列pの各要素の値の変化を確認すると、要素[0]がsumArrayメソッドの中で変化していることが分かる

 つまり、sumArrayメソッドは受け取った配列の要素[0]を足しこみに用いているので、呼び出し側に戻った時には、元の配列の要素[0]の値が変わってしまっているわけです。これが「1+2+4=7」ではなく「1+2+4=12」が表示されてしまった理由でした。

 このように、ブレークポイントの設定とステップ実行機能により、きめ細かいデバッグが可能になります。ただし、デバッグ対象ではないソースにステップインしないように注意しましょう。Javaのクラスライブラリのソースに入り込んでしまい、バグを見失う場合があります。また、今回は割愛しますが、変数ビューで変数の値を強制的に変更することもできます。例外的な処理をテストしたい場合に便利です。

次のページ
サーブレットのデバッグ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Eclipse 3.4からはじめるIDE入門連載記事一覧

もっと読む

この記事の著者

平野正喜@ランドッグ・オーグ(ヒラノマサキ)

フリーのIT系執筆者&講使(※)の「ランドッグのマウ」こと平野正喜(HIRANO Masaki)です。【略歴】 1962年札幌市生まれ。今で言うIT企業のシステムエンジニア、プロジェクトリーダー、システムコンサルタント、採用担当などを経て独立し、2002年11月にランドッグ・オーグ平野正喜事務所(h...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3612 2009/02/26 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング