私はデバッガ、計測器、およびJVMTIの分野では新しいです。 だから私はそれらについてほとんど質問がありません。JDI、Javaバイトコード計測とJavaエージェント(JWDP、JVMTI)
JDI(Javaデバッガインタフェース)、JWDP、javaagent、およびネイティブエージェント(JVMTI)の違いは何ですか? 、java instrumentation APIはどこにあるのですか?
対象のJavaアプリケーションで例外を傍受するためにJDIを使用しています。 しかし、ターゲットアプリのパフォーマンスにどのような影響を与えるかについて話をすれば、JDIは十分ではないことが分かりました。 私は、JVMTIとバイトコード計測を組み合わせることで、最も優れたアプリケーションがこれを行うことを読んでいます。しかし、JVMTIでバイトコード計測をどのように使うことができるのか理解できません。 JVMTIと一緒にバイトコード計測を行うにはどうしたらいいですか? 任意の例が役立ちます。
バイトコードとマシンコードの両方をjavaで計測できますか?
JVMTIとともに静的バイトコード分析を使用できますか。はいの場合はどうですか?
ご質問やご不明な点がありましたら、お知らせください。
お返事ありがとうございました。静的分析については、実際にターゲットアプリケーションを実行せずに例外をスローするコードを見つけ出すことができれば、私のユースケースはそれだけです。とにかく、近い将来バイトコード解析を使用するつもりはありません。 JVMTIを使用してバイトコード解析を行うことができれば、私はちょっと面白かったです。これについてのチュートリアルを指摘できれば助かります。私はすでにこれについてGoogleを検索しましたが、何も見つかりませんでした。ありがとう。 –
興味のあるものが例外を投げることができる正確なサイト(例えば 'throw new MyException()';)であれば、ASMを使用してATHROW命令を検出し、その周辺で計測器を放出することができます。 しかし、例外をスローする可能性のあるコードを呼び出す可能性のあるすべての呼び出しサイトをより広く見つけることが目的の場合は、静的呼び出しグラフを作成する必要があります。そしてそのために、私は[soot](https://sable.github.io/soot/)に目を向けるでしょう。 –