1

我正在使用JDI api(Java 调试接口),我尝试为特定方法的第一行代码创建断点请求,但也在该方法的所有“退出点”上(即在所有“返回... ;")。

创建断点请求,我需要一个Location对象(即一种指向可执行代码的指针)

为方法的第一行获取 aLocation相对容易:

theTargetMethod.allLineLocations().get(0)

获得Location所有“退出点”的问题更大。仅仅获取方法的最后一行可能是不够的,因为该方法可能return在主体中间包含多个语句,我也需要捕获这些语句。

我考虑过使用 a MethodExitRequest,但这会产生大量我不需要的事件,因为它们与类的其他方法相关。(所以它可以完成这项工作,但它会在运行时产生巨大的开销)。

所以我的问题是:我们如何获得一个Location方法的所有出口点?

编辑

附加信息

对于我的特定用例,我需要为一些方法创建断点请求,并且似乎我感兴趣的所有方法都返回 void,因此可以搜索“return void”指令(b1)方法的字节码并根据字节码中 b1 的所有索引创建一个 Locations 对象。

4

0 回答 0