今回は、Eclipse 3.4に備わっている「デバッグやテストを支援する機能」の使い方の基本を紹介します。

1 2 3 4 5 6 →

はじめに

 第4回「Eclipse 3.4でのアプリケーション開発方法(swing/JSP/サーブレット)」までで、Eclipseのインストールと設定からEclipseを用いてアプリケーションを開発するまでの一般的な流れなどを説明しました。

 今回は、複雑なアプリケーションを開発するために必要な「デバッグやテストを支援する機能」の基本を紹介します。

事前準備

 第4回のJSP開発の章で紹介した「Tomcat Launcherプラグイン」を用いるので、あらかじめ導入しておいてください。また「JStyle」も導入しておくと便利でしょう。今回の画面画像は「JStyle」導入済みの場合になっています。

今までの記事

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

 まず、Eclipseの基本機能を用いて、Javaアプリケーションのデバッグを効率化する方法を説明します。今回利用している「Eclipse IDE for Java Developers」には、次のようなデバッグ支援機能が含まれています。

  • ブレークポイントの設定
  • 変数の値の参照
  • ステップイン
  • ステップリターン
  • ステップオーバー など

 では、簡単なJavaアプリケーションを例にとって、これらの機能を利用してみましょう。第2回で作成した「hello」プロジェクトの中のhellopacパッケージを用います。この回から試す方は、第2回「Eclipse 3.4の各種設定と利用方法 Page2」とPage3を参照の上、Javaプロジェクト「hello」とパッケージ「hellopac」を作成してください。中身は空で構いません。

 そこに、下記のとおり、整数の配列を受け取って、その総和を返すsumArray(int[])というメソッドを持つHelloFuncクラスと、このメソッドの動作を試すHelloDebugクラスを作成します。

HelloFuncクラス(HelloFunc.java)
// HelloFuncクラス(HelloFunc.java)
package hellopac;
public class HelloFunc {
  // 整数の配列を受け取って、その総和を返す
  int sumArray(int[] p){
    for(int i = 1; i < p.length; i++){
      p[0] += p[i]; // 各要素の値を足しこむ
    }
    return p[0]; // 総和を返す
  }
}
HelloDebugクラス(HelloDebug.java)
// HelloDebugクラス(HelloDebug.java)
package hellopac;
public class HelloDebug {
  public static void main(String[] args) {
    int[] i = {1, 2, 3}; // テスト用の配列
    int ans; // 総和を受け取る変数
    // 総和を求める関数を呼ぶ
    ans = new HelloFunc().sumArray(i);
    // 1+2+3=6が表示される
    System.out.println("1+2+3=" + ans);
    // 1+2+4を試すため3を4に変更
    i[2] = 4;
    // 総和を求める関数を呼ぶ
    ans = new HelloFunc().sumArray(i);
    // 1+2+4=7が表示されるはずが…
    System.out.println("1+2+4=" + ans);
  }
}

 この2つのクラスを作成して実行すると、図1のように2行目に「1+2+4=7」ではなく「1+2+4=12」が表示されてしまいます。

図1:作成して実行してみると正しい結果にならない
図1:作成して実行してみると正しい結果にならない

 では、デバッグ機能を用いて、この原因を明らかにしましょう。


プロフィール

フリーのIT系執筆者&講使(※)の「ランドッグのマウ」こと平野正喜(HIRANO Masaki)です。

【略歴】
1962年札幌市生まれ。今で言うIT企業のシステムエンジニア、プロジェクトリーダー、システムコンサルタント、採用担当などを経て独立し、2002年11月にランドッグ・オーグ平野正喜事務所(http://www.rundog.org/)を設立しました。
講義・講演、ビデオ教材の作成・出演、書籍・雑誌・Webの記事・連載コラムなどの執筆を手がけています。
ヒューマンアカデミー、グレイス、教育開発センター、IRIコマース&テクノロジー、e-エージェント、サクセスロード経営研究所の非常勤講師です。 この各社にて、各企業・団体の研修、千葉工業大学、明星大学、東京国際大学、産業能率大学、千葉商科大学、神奈川工科大学、横浜商科大学、東海大学などの講義を担当してきました。また、母校の小樽商科大学でも教壇に立ちました。
肩書き・資格はソフトウェア技術者協会(SEA)正会員、Sun認定Javaプログラマ、LPI認定Linuxプロフェッショナル、Oracleマスター、Microsoft認定システムエンジニア、特種情報処理技術者、ソフトウェア開発技術者、情報セキュリティアドミニストレータなど。
趣味は芝居と音楽で、自らステージに立つこともたまにあります。
※ あえて講師ではなく「講使」と名乗っています

【著書】
「Eclipse辞典」翔泳社・2006年3月( http://www.seshop.com/detail.asp?pid=6765)、「ケータイビジネスを革新する技術 BREW」インプレス・2004年5月 
【Web著作】
RBB TODAY「スピード速報」、インプレスR&D「NGN製品動向」、@IT「Java Tips」、ITmedia「BREW最新事情」他


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。

スポンサーサイト