JDI Расположение всех точек выхода данного метода - PullRequest
0 голосов
/ 17 февраля 2019

Я работаю с JDI api (Java Debug Interface) и пытаюсь создать запросы на точки останова для первой строки кода определенного метода, но также и для всех «точек выхода» метода(т. е. для всех "return ...;").

Чтобы создать запрос точки останова , мне нужен объект Location (т.е. вид указателя наисполняемый код)

Получение Location для первой строки метода относительно просто:

theTargetMethod.allLineLocations().get(0)

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

Я рассмотрел использование MethodExitRequest но это сгенерирует тонны событий, которые мне не нужны, потому что они связаны с другими методами класса.(поэтому он может выполнять работу, но генерирует огромные накладные расходы во время выполнения).

Итак, мой вопрос: как мы можем получить Location для всех точек выхода метода?

РЕДАКТИРОВАТЬ

Дополнительная информация

Для моего конкретного случая использования мне нужно создать запросы точек останова для нескольких методов, и кажется, что все методы меня интересуютвсе возвращают void , поэтому можно выполнить поиск инструкции «return void» (b1) в байт-коде метода и создать объекты Locations на основе всех индексов b1 в байт-коде.

...