2013-04-06 72 views
1

我使用ASM注入一些簡單的跟蹤指令到我的Java程序的方法,方法進入,退出方法,時間戳等..ASM Java的BCI,跟蹤方法的參數值/方法返回值

這一切工作大。

我現在想要擴充這個並且注入指令來捕獲方法參數值和方法返回值,使用ASM的方式可以一般地應用於任何方法。

任何代碼示例指向我非常讚賞的正確方向。

回答

0

ASM參數例如 指(https://github.com/scouter-project/scouter/blob/master/scouter.agent.java/src/scouter/agent/asm/CapArgsASM.java

Type.getArgumentType(desc) // get arguments types. return Type[] 
mv.visitVarInsn(Opcodes.ILOAD, index) // load parameter to stack 

ASM返回例如 指(https://github.com/scouter-project/scouter/blob/master/scouter.agent.java/src/scouter/agent/asm/CapReturnASM.java

public void visitInsn(int opcode) { 
    if ((opcode >= IRETURN && opcode <= RETURN)) { 
     //return value is on the top stack 
    } 
    mv.visitInsn(opcode); 
}