通过JVMTI中的SetBreakpoint从一个代理设置的断点对连接到JVM的远程调试器是否可见?

时间:2019-02-09 23:28:33

标签: java remote-debugging jvm-hotspot jvmti jdwp

我们假设远程调试器已连接到本地JVM。 在某个时候,如果JVMTI代理(调试器除外)通过SetBreakpoint设置了断点,则远程调试器是否可以看到该断点? 远程调试器是否可以跳过或删除此断点?

“可见”是指断点命中事件将发送到远程调试器,因此调试器将能够像设置断点的调试器一样工作。

1 个答案:

答案 0 :(得分:1)

设置断点和接收断点事件需要can_generate_breakpoint_events功能。在HotSpot JVM中,此功能是排他性的(或solo),即,一次只能由一个JVM TI环境拥有can_generate_breakpoint_events

换句话说,所描述的情况永远不会发生:当存在JDWP代理时,没有其他JVM TI代理可以设置断点或订阅断点事件。