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に設定されています。一時停止= yの引数は、デバッガのアタッチされるまで待つようにJVMに指示します。
2.デバッグ起動構成を作成する
Eclipseで、[デバッグ]ダイアログを開き([実行]> [デバッグダイアログを開く...])、次の設定で新しいリモートJavaアプリケーション構成を作成します。
- プロジェクト:プロジェクト名
- 接続タイプ:標準(ソケット接続)
- ホスト: localhost
- ポート: 8787
3.デバッグ
したがって、アプリをデバッグするときに必要なことは次のとおりです。
- ブレークポイントを設定する
- コンソールでバッチファイルを起動する
- デバッグ構成を起動する
この問題は、バグ122429で追跡できます。ここで説明するように、抽象化レイヤーを使用することで、アプリケーションでこの問題を回避できます。
System.out
し、System.in
私のユースケースのために十分であるようにして使用してabondanedSystem.console()
。