Когда у вас есть BreakpointEvent
или StepEvent
в JDI (Java Интерфейс отладки), происходит следующее: текущая исполняемая программа (отладчик) приостанавливается до тех пор, пока отладчик не обработает событие точки останова и не возобновит работу отладчика. Но если у вас есть много точек останова, это становится медленным, даже если отладчик возобновляет работу дебютанта немедленно каждый раз, когда он получает событие точки останова (связь между отладчиком и отладчиком осуществляется через сокеты или разделяемую память, которая не мгновенная).
Но если вы хотите создать инструмент, в котором вам просто нужна информация о событиях для их хранения и последующей обработки (например, при создании профилировщика и т. д. c.), как вы можете установить эти точки останова, чтобы не приостанавливать работу программы? Или, другими словами, как можно извлекать следы стека и переменную информацию из запущенной программы асинхронным способом?