为什么jdb打印命令不是在所有线程都被挂起的时候?

时间:2016-10-29 07:58:52

标签: java jdb

使用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

0 个答案:

没有答案