Будут ли точки останова, установленные через SetBreakpoint в JVMTI от одного агента, видны удаленному отладчику, подключенному к JVM?
Давайте предположим, что удаленный отладчик подключен к локальной JVM. В какой-то момент, если агент JVMTI (кроме отладчика) устанавливает точку останова через SetBreakpoint, будет ли она видима для удаленного отладчика? Сможет ли удаленный отладчик перешагнуть или удалить эту точку останова?
Под видимым я подразумеваю, что событие попадания точки останова будет отправлено удаленному отладчику, в результате отладчик сможет вести себя так же, как если бы он был тем, кто установил точку останова.
1 ответ
Установка точек останова и получение событий точки останова требует can_generate_breakpoint_events
возможность. В HotSpot JVM эта возможность является эксклюзивной (или сольной), т.е. can_generate_breakpoint_events
может находиться только в одной среде JVM TI одновременно.
Другими словами, описанная ситуация никогда не может произойти: когда присутствует агент JDWP, никакой другой агент TI JVM не может устанавливать точки останова или подписываться на события точки останова.