使用JDB时,为什么即使在暂停所有线程之后也可以使用print
?
在下面的示例中,我启动了调试器会话并选择了一个线程。最初dump
不起作用,因为该线程未被暂停。这是预料之中的。然后,所有线程都被suspend
暂停。在此之后,dump
按预期工作。但是,print
仍然不起作用。什么" Thread没有为方法调用而暂停#34;意思?
Thread-1[1] dump this
com.sun.jdi.IncompatibleThreadStateException
at com.sun.tools.jdi.ThreadReferenceImpl.frameCount(ThreadReferenceImpl.java:342)
at com.sun.tools.example.debug.tty.ThreadInfo.getCurrentFrame(ThreadInfo.java:221)
at com.sun.tools.example.debug.tty.Commands.evaluate(Commands.java:106)
at com.sun.tools.example.debug.tty.Commands.doPrint(Commands.java:1654)
at com.sun.tools.example.debug.tty.Commands$3.action(Commands.java:1680)
at com.sun.tools.example.debug.tty.Commands$AsyncExecution$1.run(Commands.java:66)
this = null
Current thread isn't suspended.
Thread-1[1] suspend
All threads suspended.
Thread-1[1] dump this
this = {
testVar: 60
}
Thread-1[1] print this
com.sun.tools.example.debug.expr.ParseException: Unable to complete expression. Thread not suspended for method invoke