##はじめに
この記事は現在Javaを勉強する方に向けた私自身の理解している内容の記録です。
統合開発環境でJavaのコードをデバッグ実行し、ステップ実行で動作確認することが多いので、その一連の流れを記載しようと思います。
Eclipseをインストール
Javaの統合開発環境で今時点で無料で使えるeclipseをインストールしましょう。下記リンクでダウンロードできます。
今時点での最新版のeclipse 2020を選択。

すると下記画像の画面が出てきます。今回は私の環境に合わせてインストールしていきます。Macで64bitCPUであり、Javaの環境が必要なので、下記赤枠を選択します。

ダウンロードページに遷移され、自動でダウンロードが始まります。ダウンロードができたらファイルを開き、アプリケーションに移しましょう。

##デバッグ実行用のクラス作成
これでMacにインストールできました。早速起動しましょう。すると画像のような画面が表示されるので、Javaプロジェクトの作成を選択します。

作成を選択すると、画像の画面が出てきます。今回はJavaファイルを動かしてデバッグ実行したいので、プロジェクト名だけ入力して完了します。

完了したらプロジェクトが作成されるので、プロジェクト内にクラスを作りましょう。右クリックで新規、クラスを選択して作成画面が表示されます。

作成画面が表示されたら、名前をMainにし、public static void main(String args[]) にチェックを入れて完了にします。

これでクラスが作成できたので、下記のコードをeclipseのエディタに入力します。
public class Main{
int instans = 60;
static int global = 95;
static void debug(){
System.out.println("デバッグ実行");
}
void print(){
System.out.println("print()");
}
public static void main(String args[]){
Main.debug();
System.out.println("main start");
int x = 50;
String str = "文字型";
Main m = new Main();
x = 100;
str = "文字型変換";
m.print();
System.out.println("main end");
}
}
このコードをデバッグ実行し、どのように動いているのかを確認していきます。
ブレークポイント
ここからデバッグ実行に入りますが、デバッグ実行を行うには、プログラムを止める場所を先に指定する必要があります。それをブレークポイントと言います。実際にeclipseでブレークポイントの設定をしましょう。
System.out.println("main start");
今回は上記の箇所にブレークポイントを設定します。eclipseエディタの上記コードの行数の左側を右クリックし、メニューを表示してブレークポイントの切り替えを選択します。

この設定でデバッグ実行ができるので、eclipseの左上の虫マークを選択します。ここでデバッグ実行が始まります。

これでデバッグ機能が立ち上がります。そして先ほど設定したブレークポイントで処理が止まっています。
そのため、ブレークポイント前に動作する「デバッグ実行」の出力は出ており、下のf「main end」は出力されていません。
よって、2つの処理の間に置いているブレークポイントで処理が止まっているのがわかります。

ステップ実行
ここまでは処理を止めるところまでですが、処理を1行ずつ進めるステップ実行を行なってみましょう。上記の続きでステップオーバーボタンをクリックします。

クリック後は止まっている処理が1行実行され、選択状態が次の行に映ります。ブレークポイントを
System.out.println("main start");
にしていて、ステップ実行で1行実行されたので、出力欄にmain startが表示されています。

1行ずつ動いているステップ実行のイメージができたと思うので、さらにステップオーバーボタンを2回押して進めてみましょう。
エディタの右側に変数のリストがありますが、内容が更新されています。

2回ステップ実行を行なったことで、変数の定義と初期化を行なっています。
int x = 50;
String str = "文字型";
この2つの処理が通ることにより、変数の今時点で保持している値が表示できます。さらにステップオーバーボタンを3回クリックして進めてみましょう。

3回ステップ実行を行い、変数xとstrの値が更新される処理があります。
x = 100;
str = "文字型変換";
そのため変数リストの今時点での値が更新されています。
ちなみに間の処理で変数mを定義しており、生成したインスタンスを代入しています。
Main m = new Main();
Mainクラスはインスタンス変数instansがあるので、こちらも定義されているのを確認できます。
変数リストの変数名mの右矢印をクリックしましょう。

このようにインスタンス変数も確認できます。
ちなみにstatic変数が表示されないのは、static変数が独立した要素であり、変数mが持っているのではないので表示はされません。
終わりに
この記事ではIDEでのデバッグ実行を行い、その中で重要なステップ実行で1行ずつ動作確認する手順を記載しました。
実行中でプログラムが見ている時点での値の状態がわかるので、動作確認をするときに、任意のタイミングで自分の意図した値が入っているかを確認することができるので、デバッグ実行を取り入れてみてはいかがでしょうか。