如何在调试模式下运行时修改Java代码?

时间:2012-09-30 12:03:49

标签: java eclipse debugging

如何启用“运行时调试”Notch在Eclipse中的this video中讨论了什么?

作为测试,我希望能够编辑以下代码的输出,并在运行时将其更改为“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);
}

4 个答案:

答案 0 :(得分:23)

Eclipse在调试期间支持热交换代码,开箱即用。

在调试时,只需更改任何代码并保存,Eclipse会自动将修改后的代码传输到目标VM。

请注意,您无法对代码进行结构更改,例如添加新方法,更改方法签名或添加新字段。但您可以在方法中更改代码。

编辑:请注意,在解除验证期间更改代码会使该方法从头开始重新执行,重置该方法中的局部变量。

答案 1 :(得分:10)

您需要确保项目&gt;自动构建已选中。 否则它可能无效。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

启用Project-&gt;自动构建,调试模式下的热交换代码对我来说是好的