메서드 호출에 대한 인수를보고 싶습니다. 그래서 foo를 호출하는 경우 :메서드 호출에서 변수/상수 값에 액세스
x = 4;
y = 5;
...
foo(x, y, 20, 25);
내가 인수 (4,5,20,25) 내가 메소드가 호출되기 전에 이러한 인수가 스택에 밀어 이해를 인쇄 할. 메서드의 로컬 변수 배열에서 값 (초기화되었거나 상수 인 경우)을 얻으려면 어떻게해야합니까?
visitVarInsn() 및 VarInsnNode에는 배열의 실제 값을 조회 할 수있는 방법이 없습니다.
분석기와 해석기를 사용해야합니까? 아니면 더 쉬운 방법이 있습니까?
편집 : 어떻게하는지 알아 냈습니다. 바이트 코드 명령어 인수를 설명하기 위해 BasicValue 및 BasicInterpreter를 수정했습니다. 그래서 BIPUSH와 같은 명령어를 나타내는 값에는 유형 정보 만이 아니라 푸시 된 값에 대한 정보가 들어 있습니다. 방법 foo는 인터페이스의 방법으로 클래스에 속하는 경우
foo는 당신이 사용할 수 있습니다 - 프레임은 분석기
해결하려는 문제는 무엇입니까? – Bohemian
컴파일 타임에 (프로그램을 실행하지 않고) 또는 런타임에 인수를 정적으로 찾고 싶습니까? (두 번째 beeing 훨씬 쉽게) – ruediste
나는 그들을 정적으로 찾을 필요가있다. 초기화 된 것인지 아닌지와 초기 값만 알면됩니다. – zaz