我想查看方法調用的參數。所以,如果我調用foo:方法調用訪問變量/常量值
x = 4;
y = 5;
...
foo(x, y, 20, 25);
我想打印參數(4,5,20,25) 我瞭解這些參數被壓入堆棧方法被調用之前。如何從方法的局部變量數組中獲取值(如果已初始化或常量)?
visitVarInsn()和VarInsnNode沒有辦法從數組中查找實際值。
我需要使用分析器和解釋器來做到這一點,還是有更簡單的方法嗎?
編輯:想通了如何做到這一點。 我修改了BasicValue和BasicInterpreter來說明字節碼指令參數。 因此,表示像BIPUSH這樣的指令的值包含有關正在推送的值的信息,而不僅僅是類型信息。 幀進行檢查以同樣的方式與分析
你想解決什麼問題? – Bohemian
你想在編譯時(不運行程序)或運行時靜態地找到參數嗎? (第二個beeing更容易) – ruediste
我需要靜態找到它們。我只需要知道它們是否被初始化,以及初始值 – zaz