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」オプションを使用すると、実行時にスレッド インスタンスが存在する場合、2 番目の例外がスローされます。
Exception in thread "main" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Unknown Source)
at test.ThreadTest.test
2 番目のケースでは、元のプログラム以外でスレッドのstart () を呼び出すことはないと確信しています。
新しいオブジェクトの作成を監視するより良い方法はありますか?
どうもありがとう。