Я хочу просмотреть аргументы для вызовов методов. Так что, если я называю Foo:Доступ к переменным/константам в вызове метода
x = 4;
y = 5;
...
foo(x, y, 20, 25);
Я хочу напечатать аргументы (4,5,20,25) я понимаю эти аргументы в стек перед тем, вызывается метод. Как получить значение (если инициализировано или константа) из локального массива переменных метода?
visitVarInsn() и VarInsnNode не имеют возможности искать фактическое значение из массива.
Должен ли я использовать анализатор и интерпретатор, чтобы сделать это, или есть более простой способ?
EDIT: Выяснено, как это сделать. Я изменил BasicValue и BasicInterpreter для учета аргументов инструкции байткода. Значения, представляющие такие инструкции, как BIPUSH, содержат информацию о том, что значение выбрано, а не только информацию о типе. Frames рассматривается так же, как с анализатором
Какая проблема вы пытаетесь решить? – Bohemian
Вы хотите узнать аргументы статически во время компиляции (без запуска программы) или во время выполнения? (Второй намного проще) – ruediste
Мне нужно найти их статически. Мне нужно только знать, инициализированы ли они или нет, а также начальное значение – zaz