我正在使用 ASM 来监视 Java 中的对象创建。目前,我将对init的调用作为创建新对象的指标,并从
invoke XXX.init
至
dup;
invoke XXX.init;
call_my_method(Object)
我的想法是复制一个 newObjectReference 的副本,并且在这个对象的初始化之后,我调用我的方法来保留这个对象。
但是,在运行时,有一个例外:
java.lang.VerifyError, Expecting to find unitialized object on stack.
当我使用“-noverify”选项时,在运行时,如果有线程实例,则会引发第二个异常:
Exception in thread "main" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Unknown Source)
at test.ThreadTest.test
对于第二种情况,我确信除了原始程序中没有调用线程的start () 。
有没有更好的方法来监控新对象的创建?
非常感谢。