Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

Javaでプログラミングを行う際、自分の書いたコードがエラーなしでいきなり動くなんてことはほとんどありません。

そこでエラー箇所を特定するために重要な役割を担うのが「デバッグ実行」です。

本記事では、Java開発を効率化させるためには必ずマスターしたいデバッグ実行の方法について、人気開発環境であるEclipse上での操作方法を掲載しながらご紹介していきます。

Javaのデバッグ実行とは


そもそもデバッグとは何かについてですが、プログラミング中に紛れた不具合箇所を特定し取り除く作業のことをデバッグと呼びます。

デバッグ自体は様々な方法で実現出来るのですが、Javaのようなプログラミング言語では様々なツールで提供されている便利なデバッグ機能を利用した方が効率的です。

デバッガ

デバッグ作業自体は「System.out.println()」などをコード中に埋め込んで、エラー箇所を特定するような方法でも可能ですが、システム開発のような膨大なソースコードではあまりにも効率が悪くデバッガと呼ばれるデバッグ支援用のソフトウェアを利用するのが一般的です。

Eclipseをはじめとした統合開発環境(IDE)では標準で搭載されているものも多いですし、Javaではコマンドでデバッグが可能な「jdb」というツールを利用することも可能です。

デバッガで出来ること

デバッガを利用することで、プログラム実行中に一時停止させ変数に格納されている値を確認したり、変更したりすることが可能です。

デバッガは一時停止だけでなく、プログラムコードを1行ずつ実行していくようなことも可能なので、どこで不具合が起きているのかを特定しやすくなります。

Java開発で抑えておきたいデバッグ用語


Javaでデバッグ実行を行う際、よく出てくる用語についても確認しておきましょう。

キーボードのショートカットはIDEやデバッガによっても異なるので用語で検索するのがおすすめです。

ブレークポイント

ブレークポイントは実行中のプログラムを一時停止させる機能です。

指定した行で、プログラムが停止しデータの確認などが行なえます。

ブレークポイントは複数設定することが可能で、条件によって停止有無を設定することも可能です。

ステップイン

一時停止したプログラムを一行ずつ実行出来るのがステップイン機能です。

ステップインでは、対象行の処理がメソッドの呼び出しであった場合、メソッドの内部までステップ実行を行います。

最小のステップでプログラムを実行出来るため、細かくデバッグ作業を行う際に必要となります。

ステップオーバー

ステップオーバーはステップインと同じく一時停止状態から一行ずつ実行出来る機能ですが、メソッド呼び出し時の処理が異なります。

ステップオーバーではメソッドの内部までは入らず、メソッドが実行されたあとの行より再度ステップ実行を継続します。

全てのメソッドをステップ実行していると多大な時間が必要なため、ある程度ステップオーバーで目星を付けるデバッグ方法が一般的です。

ステップリターン

ステップリターンでは、現在の処理スコープのreturn処理まで実行し、呼び出し元に戻った時点で停止するステップ実行方法です。

メソッド内で利用すれば呼び出し元に移動しますし、呼び出し元がこれ以上ない場合には処理終了まで実行されます。

再開

ブレークポイントで一時停止した処理を再度実行する処理です。

次のブレークポイントが設定された行まで実行します。

ブレークポイントが以降の処理で設定されていない場合は、プログラム終了まで実行されます。

終了

一時停止された状態からプログラムを再開せず、プログラム自体を終了させます。

強制終了させる機能であるため、再度実行した場合にはプログラムの初めからスタートすることになります。

インスペクション

一時停止した状態のデータを1回だけ確認するために利用するのが「インスペクション」機能です。

確認したい変数などのデータ上で右クリックからインスペクションを選択することでポップアップが表示されます。

ウォッチ

一時停止した状態で特定のデータをデバッグ実行中監視させられる機能が「ウォッチ」機能です。

複数のブレークポイントやステップ実行と併用して利用されます。

不具合の起きているデータ変数が分かっている場合などに、処理を順番に実行しどこでおかしな値が設定されているかを特定します。

Eclipseを使ってJavaのデバッグ実行を試してみよう


では実際にEclipseを使ってJavaのサンプルコードをデバッグ実行してみたいと思います。

サンプルコード

サンプルコードとして「Main.java」ファイルに下記のコードを記述しています。

package sample;

public class Main {
	
	public static void main(String[] args) {
		
		Test1 test1 = new Test1();
		test1.testMethod1();
		Test2 test2 = new Test2();
		test2.testMethod2();
	}
}

class Test1 {
	
	public void testMethod1() {
		System.out.println("Test1クラスで処理実行中");		
	}

}


class Test2 {
	
	public void testMethod2() {
		String str = "";
		int num;
		
		Test3 test3 = new Test3();
		str = test3.testMethod3("引数の値");
		num = test3.testMethod4(5);
		System.out.println("str: " + str);
		System.out.println("num: " + num);
	}

	
}


class Test3 {
	public String testMethod3(String str1) {
		str1 = "固定値に変更しました。";
		return str1;
	}
	
	public int testMethod4(int num1) {
		num1 += 3;
		return num1;
	}
}

実行した結果となります。

Test1クラスで処理実行中
str: 固定値に変更しました。
num: 8

デバッグ実行

では実際にデバッグ実行をどのように行うのか確認していきましょう。

ステップ実行


ブレークポイントを任意の行に設定し、画面上部の虫アイコンをクリックすることでデバッグモードで実行することが出来ます。

ブレークポイントを設定した7行目で処理が中断されていることが分かります。


次に画面上部赤枠で囲んだステップインを実行してみると、Test1インスタンス生成のため14行目にハイライト行が移っていることが分かります。

この状態で今度はステップアウトを実行してみます。

すると今度は1行下に移動するのではなく、呼び出し元に戻っているのが分かります。


今度はメソッドを呼び出す処理部分で、ステップオーバーを実行してみてください。

するとメソッド内部に移動するのではなく1行下にハイライト行が移動していることが分かります。

ここで中断を実行すれば処理がそのまま終了しますし、再開を実行すればプログラム終了まで停止せずに処理が実行されます。

値の確認

今度は30行目にブレークポイントを設定し、変数の値を確認してみます。

一時停止している状態で確認したい変数を右クリックし「インスペクション」を選択します。


サンプルの場合「str」の値は初期値設定しかしていないので空白であることが分かります。

では同様に右クリックから「ウォッチ」を選択してみましょう。


表示される場所はEclipseの設定にもよりますが、選択した変数値がウォッチ式のウィンドウに表示されています。


このままステップオーバーで処理を実行してみると、変数の値がアップデートされていることが分かります。

インスペクションでは一時的な確認でしたが、ウォッチ式に設定しておけば継続して変数の値を確認することが出来ます。

さいごに: デバッグ実行でJavaコードのミスを効率的に発見しよう


本記事では、Javaにおけるデバッグ機能についての情報と合わせて、Eclipseでのデバッグ実行方法を初心者向けに解説してきました。

プログラムをミスなく構築することはほとんど不可能とも言えるので、デバッグ実行の方法はJavaプログラマーとなるには必須知識の1つです。

今回ご紹介した方法を参考に、デバッグ機能を使いこなし効率的にJava開発が進められるようにチャレンジしてみてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。