2012-09-30 83 views
13

我该如何启用这个“运行时调试”Notch在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); 
     } 
    } 
} 

编辑:我修改了代码,现在我得到我一直在寻找的结果。 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会自动将修改后的代码传输到目标虚拟机。

请注意,您不能对代码进行结构更改,如添加新方法,更改方法签名或添加新字段。但是你可以改变方法中的代码。

编辑:请注意,在deubgging期间更改代码将使该方法重新执行形式的开始,重置该方法中的局部变量。

+0

你是怎么做到的?我把一个断点,让我们说,当循环计数是在23,它是“Hello World 22”“Hello World 23”我将文本更改为别的东西,我按简历,现在我得到“你好别的0”它重新启动程序?突然间,这个数字为0。 –

+0

它会重新启动程序,它将从开始重新执行当前方法。所以它会重新设置所有变量 –

+0

啊,解释它。你介意把它放在答案中吗? –

1

我可能误解的问题,但如果你在Eclipse中调试模式(运行/调试)运行一个程序,你可以在程序运行过程中编辑方法的内容(如果JVM支持的话)。定期你不能改变导入,方法签名,类定义等,只是方法的内容。

6

您需要确保项目>自动构建被选中。 否则它可能无法正常工作。

0

启用Project-> Build Automatically之后,在调试模式下热插拔代码对我来说是好的

相关问题