Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to modify Java code while running in debug mode?

How can I enable this "Debugging in Runtime" Notch is talking about in this video in Eclipse?

As a test, I'd like to be able to edit the output of the following code and change it to "Hello Runtime Debugging" while it's running.

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: I modified the code, now I get the results I was looking for. Suraj Chandran's answer below explains it.

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);
}
like image 858
David Weng Avatar asked Sep 30 '12 12:09

David Weng


People also ask

How do I run a Java program in debug mode?

A Java program can be debugged simply by right clicking on the Java editor class file from Package explorer. Select Debug As → Java Application or use the shortcut Alt + Shift + D, J instead. Either actions mentioned above creates a new Debug Launch Configuration and uses it to start the Java application.


4 Answers

Eclipse supports hot swapping code during debugging , out of the box.

While debugging, just change any code and save it, Eclipse will automatically transfer the modified code to the target VM.

Note that you can't make structural changes to the code, like adding new methods, changing method signature or adding new fields. But you can change the code within a method.

EDIT: Note that changing the code during deubgging will make that method re-execute form the beginning, resetting the local variables in that method.

like image 161
Suraj Chandran Avatar answered Oct 01 '22 23:10

Suraj Chandran


You need to make sure that Project > Build Automatically is checked. Otherwise it might not work.

like image 24
user4049098 Avatar answered Sep 29 '22 23:09

user4049098


After enable Project-> Build Automatically, hot swapping code in debug mode is ok to me

like image 21
张宇鹏 Avatar answered Sep 30 '22 23:09

张宇鹏


I may misunderstand the question, but if you run a program in Eclipse in debug mode (Run/Debug), you can edit the content of methods during the program runs (if JVM supports it). Regularly you can not change the imports, method signatures, class definitons, etc, just the content of the methods.

like image 21
azendh Avatar answered Sep 29 '22 23:09

azendh