如何在 JDB 会话中运行自定义代码



在像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>

相关内容

  • 没有找到相关文章

最新更新