Где вызывается событие точки останова JVMTI? - PullRequest
1 голос
/ 08 мая 2020

Я клонировал исходный код OpenJDK8 и хотел проверить, где именно вызывается обратный вызов JVMTI Breakpoint. Я обнаружил, что все точки останова хранятся в списке типа JvmtiBreakpoint. Я не смог найти, где именно запускаются события точки останова.

Изменить: я нашел этот метод, но не уверен, запускает ли он событие:

JvmtiExport::post_raw_breakpoint

, который вызывается :

 InterpreterRuntime:_breakpoint

, что привело меня к файлу bytecodeInterpreter.cpp, в котором вызывается этот метод. В этом файле есть:

    switch (opcode):
      ...
      CASE(_breakpoint): {
      ...
      CALL_VM(InterpreterRuntime::_breakpoint(THREAD, METHOD, pc),  handle_exception);
      ...}

Но я все еще не понимаю, что происходит, когда я помещаю точку останова в код? Инструментирует ли JVM байт-код в этом месте и помещает ли он код операции точки останова?

Edit2: Я обнаружил, что при установке точки останова в конечном итоге вызывается

Method::set_breakpoint

.

...