1

ASM を使用して、Java プログラムのメソッド、入力されたメソッド、終了したメソッド、タイムスタンプなどに簡単なトレース命令を挿入しています...

これはすべてうまくいきます。

ここで、これを拡張して、メソッドの引数値とメソッドの戻り値をキャプチャする命令を挿入し、ASM を使用して、任意のメソッドに一般的に適用できるようにしたいと考えています。

正しい方向に私を向けるコード例は大歓迎です。

4

1 に答える 1

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);
}
于 2016-01-19T02:17:50.700 に答える