Eclipse からステップスルー デバッグを使用できるようにしたいと考えています。ビルドされたクラスを JRE クラスパスの bin ディレクトリに設定することで、クラスを外部で実行することができます。
java -cp workspace\p1\bin;workspace\p2\bin foo.Main
リモート デバッガーを使用して、プロジェクトに組み込まれたクラス ファイルを利用してデバッグできます。
この例では、Eclipse プロジェクトの構造は次のようになります。
workspace\project\
\.classpath
\.project
\debug.bat
\bin\Main.class
\src\Main.java
1. JVM コンソールをデバッグ モードで起動します。
debug.batは、 cmd.exeコンソールから外部で実行する必要がある Windows バッチ ファイルです。
@ECHO OFF
SET A_PORT=8787
SET A_DBG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=%A_PORT%,server=y,suspend=y
java.exe %A_DBG% -cp .\bin Main
引数では、デバッグ ポートが8787に設定されています。suspend=y引数は、デバッガーがアタッチされるまで待機するように JVM に指示します。
2.デバッグ起動構成を作成する
Eclipse で、[デバッグ] ダイアログを開き ([実行] > [デバッグ ダイアログを開く...]) 、次の設定で新しいリモート Java アプリケーション構成を作成します。
- プロジェクト:あなたのプロジェクト名
- 接続タイプ:スタンダード(ソケットアタッチ)
- ホスト:ローカルホスト
- ポート: 8787
3. デバッグ
したがって、アプリをデバッグする必要があるときはいつでも次のことを行う必要があります。
- ブレークポイントを設定する
- コンソールでバッチ ファイルを起動する
- デバッグ構成を起動します
この問題はバグ 122429で追跡できます。こちら で説明されているように、抽象化レイヤーを使用して、アプリケーションでこの問題を回避できます。