EclipseでJavaをデバッグする方法

投稿日: 作成:   更新:

今回は、EclipseでJavaのデバッグ実行について解説します。

  • Javaデバッグ実行のやり方・流れが知りたい。
  • デバッグの効率的なやり方を知りたい。

このような内容について解説します。

私はWEB開発中心に、フロントエンド、サーバーサイド、サーバー構築など経験豊富なエンジニアです。
少しでも分かりやすく解説していきたいと思います。

デバッグは、バグを排除するための作業のことです。
意図しない動きになっていないか探すのに使用します。

それでは行きましょう!

デバッグのやり方(流れ)

デバッグの使い方をかねて一連の流れで説明します。

実際に動かしてみて感覚をつかんでみてください。
また、デバッグ実行はショートカットキーを使用するのが一般的ですので、一緒に記載しておきます。

説明に使用するソースコード①

「デバッグのやり方」の説明で使用するソースコードです。
コピペして使ってみてください。

package sample;

public class Hoge {

    public static void main(String[] args) {

        String s1 = getBanana();
        System.out.println(s1 + "が食べたい");

        String s2 = getStrawberry();
        System.out.println(s2 + "が食べたい");
    }

    // プライベート関数
    private static String getBanana() {
        return "バナナ";
    }

    // プライベート関数
    private static String getStrawberry() {
        return "イチゴ";
    }
}

ブレークポイントを張る(Ctrl+Shift+B)

デバッグ実行する前に、処理を止めたい行の左側をダブルクリックします。

すると、次のように青丸がつきます。
これを「ブレークポイント」といいます。

デバッグ実行を開始(F11キー)

デバッグ実行するためには、虫アイコンをクリックします。

最初に「パースペクティブ切り替えの確認」ダイアログが出ますので、
「常にこの設定を使用する」にチェックを入れて「いいえ」ボタンをクリックします。

これで、デバッグ実行の時にウィンドウ配置が変わらなくなります。
(デバッグ実行時にウィンドウ配置を変えたい方は「切り替え」をクリックしてください。)

ブレークポイントに止まる

デバッグ実行が開始され、ブレークポイントを張った場所で処理が止まります。

ステップイン実行(F5キー)

7行目でステップイン実行すると、指定行の関数の中の処理へ移動します。

今回の例では、getBananaの中に移動しました。

ステップリターン実行(F7キー)

16行目でステップリターン実行すると、7行目に戻ります。

再開(F8キー)

「再開」すると、次のブレークポイントまで実行されるか、
次のブレークポイントがない場合は最後まで処理が実行されます。

流れとしては以上ですが、
続けて「終了(Ctrl+F2)、ステップオーバー実行(F6キー)」についても解説します。

終了(Ctrl+F2)

デバッグ実行を終了させたいときに「終了」します。

ステップオーバー実行(F6キー)

ブレークポイントが止まっている状態で、ステップオーバー実行すると、
そのまま次の行へ移動します。

画像に alt 属性が指定されていません。ファイル名: image-56.png

ステップイン実行(F5キー)では、getBanana関数の中に移動しましたが、
ステップオーバー実行(F6キー)では、8行目に移動しました。

少し説明が長くなりましたが、感覚はつかめましたか?

デバッグ関係のショートカット

先ほどのデバッグの流れの中で記載したショートカットキーを表にしました。

ショートカットキー内容
Ctrl+Shift+Bブレークポイントの切り替え
F5ステップイン実行
F6ステップオーバー実行
F7ステップリターン実行
F8再開
Ctrl+F2終了

もし、ショートカットキーを忘れてしまった場合は、
「メニュー > 実行」の中を見るとショートカットキーが載ってますので、ここを見ると良いでしょう。

変数、式ウィンドウの使い方

デバッグ中に「変数、式」ウィンドウを使用することで、変数の中身を見ることができます

これによって、意図した変数の値になっているかどうかを調べることができます。

変数、式ウィンドウを追加する

まず、変数、式ウィンドウを追加しましょう。

「メニュー > ビューの表示 > その他」をクリックします。

「ビューの表示」画面が開くので「デバッグ」フォルダを開いて、
Shiftキーを押しながら、「式、変数」を選択して「開く」ボタンをクリックします。

すると、次のように「変数、式」ウィンドウが追加されます。

説明に使用するソースコード②

「変数、式」ウィンドウの説明で使用するソースコードです。
コピペして使ってください。

package sample;

import java.util.HashMap;
import java.util.Map;

public class Hoge {

    public static void main(String[] args) {

        Map<String, String> map = new HashMap<>();
        map.put("banana", "バナナ");
        map.put("strawberry", "イチゴ");
        map.put("watermelon", "すいか");
        System.out.println(map);
    }
}

変数ウィンドウの使い方

14行目にブレークポイントを張って、デバッグ実行します。

ブレークポイントで止まった場所で変数ウィンドウを見ると、
14行目時点のmap変数の中身を見ることができます。

ただし変数ウィンドウは、上記のように階層が深いとデバッグ実行の度に変数が閉じてしまって、毎回開けるのが面倒です。

もし、mapの「banana」キーの中身だけ知りたいなど、
目的がハッキリしているなら「式ウィンドウ」を使った方が楽に変数の中身を確認できます。

式ウィンドウの使い方

式ウィンドウは、デバッグ中にコンパイルしないでソースコードを記述できる機能です。

この機能を利用して、map変数の「banana」キーに何の値が入っているのかを調べます。

次のように、デバッグ中に式ウィンドウを開いて「新しい式を追加する」をクリックして「map.get(“banana”);」を入力してEnterキーを押します。

すると、値に「バナナ」が表示されます。

次回のデバッグ時でも式の内容は残りますので、ピンポイントで値を確認することができます。

まとめ

今回は、EclipseでJavaのデバッグ実行のやり方について解説しました。

  • デバッグのやり方(流れ)
  • デバッグ関係のショートカット
  • 変数、式ウィンドウの使い方

ソースコード量が多くなるにつれて、コンパイルが時間かかってきますので、
いかにデバッグを効率よく実行できるかが今後のカギとなるでしょう。