EclipseでJavaなどのコードをデバッグする際、コードを編集した後にステップオーバーすると、削除した行や古いファイルにステップが止まってしまうことがあります。これは、Eclipseのコンパイル済みクラスファイルとソースコードが同期していないことが原因です。本記事では、この問題の原因と対処法を解説します。
原因:ビルドとソースの不一致
Eclipseはデバッグ中にコンパイル済みの.classファイルを参照してステップ実行します。コードを編集したにもかかわらず、古い.classファイルが残っていると、削除した行にステップが止まったり、別の同名ファイルが参照されることがあります。
特に、同じプロジェクト内に複数の同名クラスが存在する場合や、ビルドパスに古いクラスファイルが残っている場合に起こりやすいです。
対処法1:クリーンビルド
1) メニューから [Project] → [Clean…] を選択します。
2) 対象のプロジェクトを選んで「OK」をクリックします。
3) Eclipseが古い.classファイルを削除し、最新のソースコードで再コンパイルします。
これにより、デバッグ時に古い行に止まる問題が解消されることがあります。
対処法2:デバッグ構成の確認
デバッグ構成で正しいプロジェクトとクラスパスが設定されているか確認します。特に外部ライブラリや同名クラスが混在していないかチェックしてください。
不要なブレークポイントが別ファイルに設定されている場合、それが原因で別の箇所に止まることもあるため、ブレークポイントビューで全て確認・削除することをおすすめします。
対処法3:Eclipseの再起動とワークスペースのリフレッシュ
プロジェクトのクリーンだけで解決しない場合は、Eclipseを再起動し、ワークスペースをリフレッシュします。
メニュー [File] → [Refresh] またはプロジェクトを右クリックして [Refresh] を選択します。
これにより、Eclipseのキャッシュや古い参照が更新され、最新コードでデバッグが可能になります。
実例
編集前のコード。
int a = 1;
int b = 1;
int c = 1;
編集後(bを削除)。
int a = 1;
int c = 1;
この場合、クリーンビルドとワークスペースのリフレッシュを行うことで、ステップオーバーが削除したb行に止まらず、正しくaからcへステップするようになります。
まとめ
Eclipseでデバッグ中に削除したコードにステップしてしまう問題は、主にビルド済みクラスファイルとソースコードの不一致が原因です。
対処法としては、クリーンビルド、デバッグ構成の確認、ワークスペースのリフレッシュを行うことで、多くの場合解決します。
同名ファイルや不要なブレークポイントにも注意し、常に最新のコードと同期した状態でデバッグを行いましょう。


コメント