Я работаю с JDI api (Java Debug Interface) и пытаюсь создать запросы на точки останова для первой строки кода определенного метода, но также и для всех «точек выхода» метода(т. е. для всех "return ...;").
Чтобы создать запрос точки останова , мне нужен объект Location
(т.е. вид указателя наисполняемый код)
Получение Location
для первой строки метода относительно просто:
theTargetMethod.allLineLocations().get(0)
Получение Location
для всех «точки выхода"более проблематично.Просто получить последнюю строку метода, вероятно, недостаточно, потому что метод может содержать несколько операторов return
в середине тела, и мне тоже нужно их перехватить.
Я рассмотрел использование MethodExitRequest
но это сгенерирует тонны событий, которые мне не нужны, потому что они связаны с другими методами класса.(поэтому он может выполнять работу, но генерирует огромные накладные расходы во время выполнения).
Итак, мой вопрос: как мы можем получить Location
для всех точек выхода метода?
РЕДАКТИРОВАТЬ
Дополнительная информация
Для моего конкретного случая использования мне нужно создать запросы точек останова для нескольких методов, и кажется, что все методы меня интересуютвсе возвращают void , поэтому можно выполнить поиск инструкции «return void» (b1) в байт-коде метода и создать объекты Locations на основе всех индексов b1 в байт-коде.