我想查看方法调用的参数。所以,如果我调用foo:方法调用访问变量/常量值
x = 4;
y = 5;
...
foo(x, y, 20, 25);
我想打印参数(4,5,20,25) 我了解这些参数被压入堆栈方法被调用之前。如何从方法的局部变量数组中获取值(如果已初始化或常量)?
visitVarInsn()和VarInsnNode没有办法从数组中查找实际值。
我需要使用分析器和解释器来做到这一点,还是有更简单的方法吗?
编辑:想通了如何做到这一点。 我修改了BasicValue和BasicInterpreter来说明字节码指令参数。 因此,表示像BIPUSH这样的指令的值包含有关正在推送的值的信息,而不仅仅是类型信息。 帧进行检查以同样的方式与分析
你想解决什么问题? – Bohemian
你想在编译时(不运行程序)或运行时静态地找到参数吗? (第二个beeing更容易) – ruediste
我需要静态找到它们。我只需要知道它们是否被初始化,以及初始值 – zaz