debugging java jdb如何计算多行代码?

zdwk9cvp  于 2023-01-26  发布在  Java
关注(0)|答案(1)|浏览(113)

如for循环
有没有动态计算代码解决方案?
eval也不支持import关键字。

main[1] eval java.lang.Class.forName("java.util.stream.IntStream").getDeclaredMethods()
 java.lang.Class.forName("java.util.stream.IntStream").getDeclaredMethods() = instance of java.lang.reflect.Method[51] (id=767)

main[1] print java.util.stream.IntStream.range(0, 3)
 java.util.stream.IntStream.range(0, 3) = "java.util.stream.IntPipeline$Head@67b64c45"

main[1] eval java.util.stream.IntStream.range(0, 3).forEachOrdered(n -> { System.out.println(n); })
com.sun.tools.example.debug.expr.ParseException: Name unknown: n
 java.util.stream.IntStream.range(0, 3).forEachOrdered(n -> { System.out.println(n); }) = 空值

也不支持Java传统的for循环。

main[1]
main[1] eval  for (int i = 1; i <= 10; i++) {
            System.out.println(i);
无法识别的命令: 'system.out.println(i);'。请尝试获得帮助...
main[1]         }com.sun.tools.example.debug.expr.ParseException: Encountered " "for" "for "" at line 1, column 3.
Was expecting one of:
nvbavucw

nvbavucw1#

在jdb会话中,如果运行help,则可能会看到如下内容:

Initializing jdb ...
> help
** command list **
...

print <expr>              -- print value of expression
dump <expr>               -- print all object information
eval <expr>               -- evaluate expression (same as print)
...

eval的描述是evaluate expression,所以这不是evaluate语句,这是你真正想要的,如果我说错了,请纠正我,谢谢!

相关问题