【发布时间】:2019-07-03 20:15:04
【问题描述】:
让我们假设一个远程调试器连接到本地 JVM。 在某些时候,如果 JVMTI 代理(调试器除外)通过 SetBreakpoint 设置断点,远程调试器是否可以看到它? 远程调试器能否跳过或移除此断点?
可见是指断点命中事件将被发送到远程调试器,因此调试器将能够以与设置断点的人相同的方式运行。
【问题讨论】:
标签: java remote-debugging jvm-hotspot jvmti jdwp
让我们假设一个远程调试器连接到本地 JVM。 在某些时候,如果 JVMTI 代理(调试器除外)通过 SetBreakpoint 设置断点,远程调试器是否可以看到它? 远程调试器能否跳过或移除此断点?
可见是指断点命中事件将被发送到远程调试器,因此调试器将能够以与设置断点的人相同的方式运行。
【问题讨论】:
标签: java remote-debugging jvm-hotspot jvmti jdwp
设置断点和接收断点事件需要can_generate_breakpoint_events 能力。在 HotSpot JVM 中,此功能是独占的(或 solo),即 can_generate_breakpoint_events 一次只能由一个 JVM TI 环境拥有。
换句话说,所描述的情况永远不会发生:当 JDWP 代理存在时,没有其他 JVM TI 代理可以设置断点或订阅断点事件。
【讨论】: