2012-09-30 16 views
13

「ランタイムでのデバッグ」を有効にするにはどうすればいいですかノッチはEclipseのthis videoについて話していますか?デバッグモードで実行中にJavaコードを変更するにはどうすればよいですか?

テストとして、次のコードの出力を編集し、実行中に「Hello Runtime Debugging」に変更したいと考えています。

public class HelloWorld { 
    public static void main(String[] args) throws InterruptedException { 
     doIt();  
    } 

    private static void doIt() throws InterruptedException { 
     for (int i = 0; i < 1000; ++i) { 
      System.out.println("Hello World " + i); 
      Thread.currentThread().sleep(100); 
     } 
    } 
} 

EDIT:私は私が探していた結果を得る今、コードを変更しました。以下のSuraj Chandranの答えでそのことが説明されています。

private static void doIt() throws InterruptedException { 
    for (int i = 0; i < 1000; ++i) { 
     print(i); 
     Thread.currentThread().sleep(100); 
    } 
} 

private static void print(int i) { 
    System.out.println("Hello Sir " + i); 
} 

答えて

22

Eclipseはデバッグ時にホットスワップコードをサポートしています。

デバッグ中にコードを変更して保存するだけで、eclipseは変更されたコードをターゲットVMに自動的に転送します。

新しいメソッドの追加、メソッドのシグネチャの変更、新しいフィールドの追加など、コードを構造的に変更することはできません。しかし、メソッド内のコードを変更することができます。

EDIT:デバッギング中にコードを変更すると、そのメソッドはそのメソッドのローカル変数をリセットしてフォームを最初から再実行します。

+0

どうやってそれをしますか?私はブレークポイントを置いて、ループカウントが23になったら、それは "Hello World 22" "Hello World 23"と変わります。私は何かにテキストを変更し、私は再開を押します、 "Hello Something else 0"プログラムを再起動しますか?カウントは0にすべて突然です。 –

+0

プログラムを再起動すると、現在のメソッドが最初から再実行されます。だからそれは再びすべての変数をリセットします –

+0

ああそれを説明します。あなたはそれを答えに入れてもいいですか? –

1

私は質問を誤解かもしれませんが、デバッグモード(実行/デバッグ)にEclipseでプログラムを実行する場合(JVMがサポートしている場合)は、プログラムの実行時にメソッドの内容を編集することができます。通常、メソッドの内容だけをインポート、メソッドシグネチャ、クラス定義などで変更することはできません。

6

プロジェクト>自動ビルドを確認する必要があります。 それ以外の場合は動作しない可能性があります。

0

自動設定を有効にした後、デバッグモードのホットスワップコードは私には大丈夫です