LoginSignup
26
29

More than 5 years have passed since last update.

Eclipseでバッチ起動のJavaプログラムをデバッグ(ステップ実行)する

Last updated at Posted at 2014-05-30

Javaプログラムを書く

Eclipseのプロジェクト構成

プロジェクト構成はこんな感じです。

Hello.javaでなくてDebug.javaでした。スクリーンショットが間違っています。(私のミスです!)
Hello.javaではなく、以後もDebug.javaとして出てきますので、Debug.javaというクラスを作成してください。

実行するJavaファイル

Javaファイル「Debug.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を実行するバッチを書く

execute.bat
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文仕込んでデバックするのいやですよね。
あり得ないでしょう!

以上です。

26
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
29