共享虚拟机中有一个jvm。其他开发者可能通过idea远程调试,导致断点挂机。
出于某种原因,我需要继续这个过程。
我用 jvmti 编写了一个代理程序,试图接收断点事件以清除它们。但是没有收到任何事件。
接收设置断点事件的正确方法是什么?或者任何其他方式来阻止远程挂断?
提前致谢。
共享虚拟机中有一个jvm。其他开发者可能通过idea远程调试,导致断点挂机。
出于某种原因,我需要继续这个过程。
我用 jvmti 编写了一个代理程序,试图接收断点事件以清除它们。但是没有收到任何事件。
接收设置断点事件的正确方法是什么?或者任何其他方式来阻止远程挂断?
提前致谢。
在 HotSpot JVM 中,can_generate_breakpoint_events
是一种独占能力——这意味着一次只有一个 JVM TI 代理可以拥有这种能力。
jdwp
用于远程调试的标准代理也是 JVM TI 代理。当它被加载时,没有其他 JVM TI 代理可能获得can_generate_breakpoint_events
能力。因此,您的代理将无法设置/清除断点或接收断点事件。
您可能会尝试修改原始libjdwp,而不是尝试在单独的代理中拦截断点事件。或者更简单——只要你想恢复挂起的应用程序,就强制关闭 jdwp 连接。