给定方法的所有出口点的JDI位置

时间:2019-02-17 16:09:45

标签: java jdi

我正在使用JDI api (Java Debug Interface),我尝试为特定方法的第一行代码以及该方法的所有“退出点”(即所有“返回..”)创建断点请求。 。;“)。

对于create a breakpoint request,我需要一个Location对象(即,指向可执行代码的指针)

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

theTargetMethod.allLineLocations().get(0)

获取所有“出口点”的Location更具问题。仅获取方法的最后一行可能是不够的,因为该方法可能在主体的中间包含多个return语句,我也需要抓住它们。

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

所以我的问题是:如何为方法的所有退出点获取Location

编辑

其他信息

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

0 个答案:

没有答案