2012-09-30 10 views
13

¿Cómo puedo habilitar esta "depuración en tiempo de ejecución" de la que habla Notch en this video en Eclipse?¿Cómo modificar el código de Java mientras se ejecuta en modo de depuración?

Como prueba, me gustaría poder editar el resultado del siguiente código y cambiarlo a "Hello Runtime Debugging" mientras se está ejecutando.

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: he modificado el código, ahora consigo los resultados que estaba buscando. La respuesta de Suraj Chandran a continuación lo explica.

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); 
} 

Respuesta

22

Eclipse es compatible con el código de intercambio en caliente durante la depuración, de fábrica.

Al depurar, simplemente cambie cualquier código y guárdelo, eclipse transferirá automáticamente el código modificado a la máquina virtual de destino.

Tenga en cuenta que no puede realizar cambios estructurales en el código, como agregar nuevos métodos, cambiar la firma del método o agregar nuevos campos. Pero puedes cambiar el código dentro de un método.

EDITAR: Tenga en cuenta que al cambiar el código durante la eliminación de bits hará que ese método se vuelva a ejecutar desde el principio, reiniciando las variables locales en ese método.

+0

¿Cómo lo haces? Puse un punto de quiebre, digamos cuando el recuento de bucles está en 23, va "Hello World 22" "Hello World 23" Cambio el texto a otra cosa, presiono currículum, ahora obtengo "Hello Something else 0" reinicia el programa? La cuenta está en 0 de repente. –

+0

No reinicia el programa, volverá a ejecutar el método actual desde el inicio. Por lo tanto, restablecerá todas las variables nuevamente –

+0

Ah, eso lo explica. ¿Te importaría ponerlo en la respuesta? –

1

puedo entender mal la pregunta, pero si se ejecuta un programa en Eclipse en modo de depuración (Ejecutar/Depurar), se puede editar el contenido de los métodos durante el programa se ejecuta (si JVM lo soporta). Regularmente no puede cambiar las importaciones, las firmas de métodos, las definiciones de clase, etc., solo el contenido de los métodos.

6

Debe asegurarse de que Project> Build Automatically esté marcado. De lo contrario, podría no funcionar.

0

Después de habilitar Project-> Build Automatically, el código de intercambio en modo de depuración está bien para mí

Cuestiones relacionadas