Будут ли точки останова, установленные через SetBreakpoint в JVMTI от одного агента, видны удаленному отладчику, подключенному к JVM?

Давайте предположим, что удаленный отладчик подключен к локальной JVM. В какой-то момент, если агент JVMTI (кроме отладчика) устанавливает точку останова через SetBreakpoint, будет ли она видима для удаленного отладчика? Сможет ли удаленный отладчик перешагнуть или удалить эту точку останова?

Под видимым я подразумеваю, что событие попадания точки останова будет отправлено удаленному отладчику, в результате отладчик сможет вести себя так же, как если бы он был тем, кто установил точку останова.

1 ответ

Решение

Установка точек останова и получение событий точки останова требует can_generate_breakpoint_events возможность. В HotSpot JVM эта возможность является эксклюзивной (или сольной), т.е. can_generate_breakpoint_events может находиться только в одной среде JVM TI одновременно.

Другими словами, описанная ситуация никогда не может произойти: когда присутствует агент JDWP, никакой другой агент TI JVM не может устанавливать точки останова или подписываться на события точки останова.

Другие вопросы по тегам