在像IntelliJ这样的IDE中,我可以在断点处停止执行,然后使用代码片段视图执行任意代码。
使用附加到进程的命令行调试器 JDB 时,是否可以执行相同的操作?
我怀疑在表面之下,IntelliJ使用JVM公开的某些功能来允许任意代码执行。因此,它也应该存在于命令行调试器中。
您可以使用"eval"命令来执行此操作:
对于主类:
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 -g 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>