当你有一个BreakpointEvent
或StepEvent
在 JDI(Java 调试接口)中时,会发生什么是当前正在执行的程序(被调试者)被挂起,直到调试器处理断点事件并恢复被调试者。但是如果你有很多断点,这会变得很慢,即使调试器每次收到断点事件时都会立即恢复被调试者(调试器和被调试者之间的通信是通过套接字或共享内存进行的,这不是即时的)。
但是,如果您想构建一个工具,您只需要事件的信息来存储它们并在以后处理它们(例如,在构建分析器等时),您如何设置这些断点而不暂停程序?或者换句话说,如何以异步方式从正在运行的程序中提取堆栈跟踪和变量信息?