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

Will breakpoints set via SetBreakpoint in JVMTI from one agent be visible to a remote debugger connected to the JVM?

让我们假设远程调试器连接到本地 JVM。 在某些时候,如果 JVMTI 代理(调试器代理除外)通过 SetBreakpoint 设置断点,它是否对远程调试器可见? 远程调试器能否跳过或移除此断点?

我所说的可见是指断点命中事件将被发送到远程调试器,因此调试器将能够以与他设置断点的方式相同的方式运行。

设置断点和接收断点事件需要can_generate_breakpoint_events capability. In HotSpot JVM this capability is exclusive (or solo),即can_generate_breakpoint_events一次只能由一个JVM TI环境拥有。

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