0

我想在我使用的测试用例中找到不同方法的偏移量。我可以找到方法的开始和结束位置,我查找操作码 RETURN 和 ARETURN(我在一个扩展方法 visitInsn() 中的 methodVisitor 的类中这样做),但我无法找到这些发生在字节码。有任何想法吗?

以防万一: 我正在使用 ASM 的核心 API,我知道树 API 可以帮助我找到我需要的东西,但是树 API 使一切变得缓慢并使用内存,我买不起任何这些,所以我使用核心 API

4

1 回答 1

0

我找到了一种方法来获取每条指令的偏移量,这不是一种常见的方法,但它对我有用。ASM 不会为您提供每条指令的偏移量,因为通常您不需要它,但您仍然可以获得它,我必须修改 ASM 中的类以使我的想法生效。

我修改了 Label 类和 ClassReader 类,在第二个中,有一个部分只在特殊情况下创建标签并将标签添加到标签数组中,所以我只是告诉它为每个指令添加一个标签,然后我只是调用getOffset 内的 visitInsn 内的 methodVisitor 和,标签将被解析并具有偏移量。

于 2012-07-05T19:27:22.563 回答