Eclipseでのデバッグ超基本編

最近Eclipse上でコードを実行した際によくわからない挙動が起きたが、先輩にデバッグツールの使い方を教えてもらって無事解決できた。
Eclipseに限らず、今までデバッグツールというものがよくわからなくてまともに使ったことがなかったのだが、今回使ってみて「これはマジで生産性10倍以上になるぞ...」と思ったので、忘れないようにやり方を書いておく。

今回起こった挙動

とあるクラスのインスタンスが保持していた値をDBに書き込むコードを扱っていたのだが、DBに書き込まれた値が想定と異なっていた。
書き込み前に、どこかで変数の値が変わってしまっている可能性が高い。

ブレークポイントをつける

まず、デバッグ時に処理を止めたい行にブレークポイントをつける。行の左側をダブルクリックすればいい。

デバッグモードで走らせる

今回は実行時にargumentを渡さないといけないコードだったので、Run -> Debug Configurationを選んで起動時の設定をしておく。あるいは、虫マークの横にあるプルダウンから選んでもよい。
特に設定が必要なければ、普通にDebugで走らせればよい。 デバッグモードで実行すると、「Perspectiveを開きますか」というポップアップが出るので、Yesを選択して開く。

行を進める

ブレークポイント以降は、行を手動で進めていく。主な処理は以下の3つ。
* Step Over: 次の行に進む。
* Step In: メソッドが実行されている行の場合、その中のコードに入る。
* Step Return: メソッドの中にいる場合に、処理を全て行ってメソッドから抜ける。

変数の値を確認

今いる行の時点での変数の値は、画面右上の「変数」欄で確認できる。しかし、この欄の中の項目は行を進めるごとに折りたたまれてしまうため、変数が多いと探すのが大変になる。
そこでより便利なのが、Show View -> Expressionsを開くこと。
ここにはJavaの式を書くことができ、それを評価してくれる。つまり、ここに変数名を書いておけばすぐに値を見られるようになる。
後は行を進めつつ、変数の値がどこで変化するか確かめていく。

他にもEclipseにはデバッグ機能がいろいろついているようなので、使いこなせるようになっておきたい。
今まで他の言語でよくデバッグツールを使わずにやってきたなあとしみじみ振り返っている。