Eclipseのデバッグをしているとまれにブレークポイントを置いたにも関わらず、ブレークポイントで止まらない事があります。
そんなときの確認ポイント・対処方法をご紹介します。
目次
デバッグ実行していない
初歩的なミスですがありがちですので実行方法を見直してみてください。
すべてのブレークポイントをスキップ機能が有効になっている場合
Eclipseのデバッグ設定ですべてのブレークポイントをスキップ機能をONにしている場合はOFFにしましょう。
機能が有効化されているとブレークポイントを置き、デバッグ実行していてもデバッグ実行できません。
ちなみにすべてのブレークポイントをスキップ機能が有効の場合、ブレークポイントのアイコンが斜線付きの青丸に変わっています。
ブレークポイントをスキップ機能無効時(デバッグ可) | |
ブレークポイントをスキップ機能有効時(デバッグ不可) |
プロジェクトの更新
Eclipse上で認識しているプロジェクト構成と実際の構成が同期化されておらず不整合が発生している可能性があります。
プロジェクトを右クリックしてリフレッシュを実行してください。
プロジェクトのクリーン
ソースの変更が正しくコンパイルされていない可能性があります。
メニューバーからプロジェクトを選択し、クリーンを実行しましょう。
WTPのクリーン
Webアプリケーションの構築にWTPを使っている場合はWTPのクリーンも実施してみましょう。
WTP上のサーバーを右クリックし、クリーンを実行。
Eclipseの再起動
上記でも解決できな場合はEclipseを再起動しましょう。
ここまでで大抵は実行できるようになると思います。
エンハンスされたクラスのデバッグ
急に難しく特定領域の話になりますのでよくわからない人は読み飛ばしてください。
昨今Webアプリケーションを作成する場合フレームワークは欠かせません。
Struts、Struts2、SAStruts、Spring、JSFなど。
これらのフレームワークでは作成したクラスを実行時等に独自に拡張し動的にクラスを生成(更新)する機能を持つものがあります。そのように作成されたクラス(またはメソッド)をエンハンスされたクラス(またはメソッド)といいます。
AOPなどが代表的ですね。
これらのデバッグは非常に厄介です。
もともとソースはないのでブレークポイントはおけません。
何が問題かというとステップ実行していくと「行番号属性が見つからないため、ブレークポイントを・・・」というダイアログが出て意図したデバッグができなくなる場合があります。
フレームワークが実行時等に動的に生成するクラスやメソッドのため該当ソースがなく、行番号属性がないために発生します。
その場合はソース上で次に実行されるであろう箇所にブレークポイントを置き、デバッグの再開機能を用い、エンハンスされたクラス(メソッド)のデバッグをスキップさせることで対応することが可能です。
コメント
[…] Eclipseでデバッグが止まらなくなった場合の対処方法 […]
[…] Eclipseでデバッグが止まらなくなった場合の対処方法 […]
[…] Eclipseでデバッグが止まらなくなった場合の対処方法 […]
[…] Eclipseでデバッグが止まらなくなった場合の対処方法 […]
[…] Eclipseでデバッグが止まらなくなった場合の対処方法 […]
[…] Eclipseでデバッグが止まらなくなった場合の対処方法 […]
[…] Eclipseでデバッグが止まらなくなった場合の対処方法 […]
[…] Eclipseでデバッグが止まらなくなった場合の対処方法 […]
[…] Eclipseでデバッグが止まらなくなった場合の対処方法 […]