2016-06-01 2 views
0

В среде IDE, такой как IntelliJ Я могу остановить выполнение в точке останова, а затем выполнить произвольный код, используя представление фрагмента.Как запустить пользовательский код в сеансе JDB?

Могу ли я сделать то же самое, если использовать JDB отладчика командной строки, связанный с процессом?

Я подозреваю, что под поверхностью IntelliJ использует некоторую функциональность, открытую JVM для обеспечения произвольного выполнения кода. Поэтому он также должен присутствовать в отладчике командной строки.

ответ

0

Вы можете использовать команду "Eval", чтобы сделать это:

для класса Main:

public class Main { 
    public static void main(String [] arg) { 
     int a = 1; 
     int b = 3; 
     System.out.println("a+b=" + (a+b)); 
    } 
} 

вы можете оценить код внутри JDB следующим образом (убедитесь, что для компиляции с опцией -g: JAVAC - г Main.java)

VM Started: Set deferred breakpoint Main.main 

Breakpoint hit: "thread=main", Main.main(), line=5 bci=0 
5   int a = 1; 

main[1] step 
> 
Step completed: "thread=main", Main.main(), line=6 bci=2 
6   int b = 3; 
main[1] eval a+1 
a+1 = 2 
main[1] eval java.lang.System.out.println("Hello: " + a); 
Hello: 1 
java.lang.System.out.println("Hello: " + a); = <void value> 
Смежные вопросы