#Javaプログラムを書く
##Eclipseのプロジェクト構成
プロジェクト構成はこんな感じです。
Hello.javaでなくてDebug.javaでした。スクリーンショットが間違っています。(私のミスです!)
Hello.javaではなく、以後もDebug.javaとして出てきますので、Debug.javaというクラスを作成してください。
##実行するJavaファイル
Javaファイル「Debug.java」の中身はこんな感じで。
package sample;
public class Debug {
public static void main(String[] args) {
System.out.println("");
System.out.println("java引数 → " + args[0]);
String vmarg = System.getProperty("vmarg");
System.out.println("VM引数 → " + vmarg);
}
}
処理としてはmainへ渡す引数とVM引数の値をprintしているだけです。
#Javaを実行するバッチを書く
SET CONTEXT="C:\eclipse4.2\workspace\Debug"
SET REMOTE_DEBUG="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y"
call %JAVA_HOME%\bin\java.exe -cp %CONTEXT%\bin\ %REMOTE_DEBUG% -Dvmarg="HelloWorld_VMArg" sample.Debug "HelloWorld_JAVAARG"
pause
全部で4行です。
コピペしてもらえれば、ちゃんとペーストできると思います。
##1行目
このbatを置いてあるプロジェクトを変数CONTEXTにセット。
ステップ実行したいJavaファイルもこのディレクトリに置いています。
##2行目
REMOTE_DEBUG変数にJavaコマンド実行時に与えるリモートデバッグ用の引数をセットしています。
##3行目
####Javaクラス「Debug」を実行する部分です。
- Javaコマンドの引数に-cpでクラスパスを指定。「%CONTEXT%\bin\」の部分。
- 2行目で設定したREMOTE_DEBUG変数を引数として指定。「%REMOTE_DEBUG%」の部分。
- VM引数としてvmargという名前で文字列"HelloWorld_VMArg"を指定。
- 実行するJavaプログラムを指定「sample.Debug」の部分。
- Javaプログラム「sample.Debug」の引数として文字列"HelloWorld_JAVAARG"を指定。
#batを実行する
execute.batを実行します。普通にダブルクリックすれば実行されますね。
こんな形で止まるはずです。
#Eclipseでリモートデバッグする
##設定の作成
パッケージエクスプローラのDebugプロジェクトを右クリック >> Debug As >> Debug Configurationで
以下の画面のようにRemote Java Applicationを作成
##実行
あとはDebugボタンをポチればいいのですが、その前にDebug.javaにEclipseでブレークポイント入れておいてくださいね。
で、ポチ!
するとブレークポイントで止まります。
ステップ実行していくとコマンドプロンプトにprintデバック結果も表示されることでしょう。
なんか、かつかつで大規模なバッチプログラムとかprint文仕込んでデバックするのいやですよね。
あり得ないでしょう!
以上です。