SHOEISHA iD

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

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

Eclipse 3.4からはじめるIDE入門

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

第5回

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

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

ブレークポイントの設定と変数の値の参照

 今回はメソッドの呼び出し前と呼出し後の変数の値に問題がありそうです。そこで、sumArray(int[])メソッドを呼び出している2つの行でプログラムを一時停止して、変数の値をチェックしてみましょう。

 プログラムを一時停止するために、ブレークポイントを設定します。ある行にブレークポイントを設定するには、エディタビューでその行の左側をクリックするか、その行にカーソルがあるときに[Ctrl]+[Shift]+[b]キーを押すか、メニューから[実行(R)]-[ブレークポイントの切替(K)]を実行します。ブレークポイントが設定された行には●印が表示されます。

図2:行の左側をクリックしてブレークポイントを設定
図2:行の左側をクリックしてブレークポイントを設定

 ブレークポイントを設定し、そこで実行を停止するにはデバッグモードで実行する必要があります。[デバッグアイコン]をクリックするか、メニューから[実行(R)]-[デバッグ(D)]を実行します。

図3:[デバッグアイコン]をクリック
図3:[デバッグアイコン]をクリック

 「パースペクティブ切り替えの確認」ダイアログが表示されます。ダイアログに記述されているとおり、デバッグを実行すると、パースペクティブが「Java」から「デバッグ」に切り替わります。毎回確認する必要はないでしょうから、「常にこの設定を使用する(R)」をチェックして[はい]をクリックします。

図4:「パースペクティブ切り替えの確認」ダイアログ
図4:「パースペクティブ切り替えの確認」ダイアログ

 パースペクティブが「デバッグ」に切り替わり、パッケージエクスプローラービューの代わりに、ウィンドウ上部に「デバッグビュー」と「変数/ブレークポイントビュー」が表示されます。また、エディタービューには1つめのブレークポイントで停止していることが示されます。なお、プログラムが最初の「System.out.println(…)」の手前で一時停止しているので、コンソールビューにはまだ何も表示されていません。

図5:デバッグパースペクティブに切り替わり、プログラムがブレークポイントで停止している
図5:デバッグパースペクティブに切り替わり、プログラムがブレークポイントで停止している

 この時点での変数の値を確認します。変数ビューにある配列「i」の左側のアイコンをクリックすると配列の各要素のこの時点での値が表示されます。まだ、sumArray(int[])メソッドを呼び出していませんので、初期化したままの状態なのが分かります。

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

 では、プログラムを再開して、次のブレークポイントまで進めましょう。[再開アイコン]をクリックします。

図7:[再開アイコン]をクリック
図7:[再開アイコン]をクリック

 エディタービューを見ると、次のブレークポイントまで処理が進み、ここでまた一時停止していることが分かります。

図8:プログラムが2つめのブレークポイントで停止している
図8:プログラムが2つめのブレークポイントで停止している

 また、最初の「System.out.println(…)」が実行されているので、コンソールビューには1行目の「1+2+3=6」が表示されています。

図9:コンソールビューに1行目が表示されている
図9:コンソールビューに1行目が表示されている

 そして、1回目のsumArray(int[])メソッドの呼び出しにより、変数「ans」に値「6(=1+2+3)」が代入されるので、変数ビューに変数「ans」とその値である「6」が表示されます。また、その後で、配列のi[2]4を代入しているので、変数ビューのi[2]の値が「4」に変わっています。ところが、i[0]の値が「6」になってしまっています。変数ビューでは1つ前のブレークポイントから変化があった変数を黄色で示しますので、予期せぬ変化を発見しやすいのがメリットです。

図10:変数ビューに変数「ans」とその値が追加され、iの[0]と[2]の値が変わっている
図10:変数ビューに変数「ans」とその値が追加され、iの[0]と[2]の値が変わっている

 これで、「1+2+4=7」と表示されなかったというバグ解決の手がかりがつかめました。では、ここからステップ実行機能を用いて、より細かい問題分析を行います。

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

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング