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

时间:2016-06-01 12:48:22

标签: java debugging jdb

在像IntelliJ这样的IDE中,我可以在断点处停止执行,然后使用片段视图执行任意代码。

使用附加到进程的命令行调试器JDB时,我可以这样做吗?

我怀疑在表面下IntelliJ使用JVM公开的一些功能来允许任意代码执行。所以它也应该存在于命令行调试器中。

1 个答案:

答案 0 :(得分:0)

你可以使用" 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>