5

JVMTI エージェントで使用する C または C++ の Java 用の BCI (Bytecode Instrumentation) ライブラリを探しています。

最良のシナリオは、純粋な C でのASMBCELのようなものです。

java_crw_demo私がこれまでに見つけた最も近いものは、Kelly O'Hair によって数年前に書かれ、それ以来 Sun/Oracle のチュートリアルで使用されているデモのみです。

他に何か知っていますか?

java.lang.Objectいくつかの理論的根拠:のすべての直接サブクラスでゲッター メソッドを追加し、このゲッターをオーバーロードする計測ツールを構築していますObject。このため、Java エージェントを使用できません。また、複雑さと速度の理由から、インストルメンテーションを実行するためにセカンダリ JVM を生成することは避けたいと思います。

4

2 に答える 2

1

かなり前に C で書き始めたことがありますが、やる気がなくてあまりうまくいきませんでした。私の知る限り、C の公開リリースはありませんが、 JVM 仕様に従って、必要に応じて簡単なリリースを作成するのはそれほど難しくありません。ファイル形式に関する章と命令セットに関する章class特に関心があるはずです。

于 2012-07-31T16:27:34.897 に答える
1

私が見つけた唯一の合理的な解決策は、ASM (または選択した BCI フレームワーク) を使用する別の Java プログラムに実際にバイト コードをパイプすることです。これは高速ではありませんが、インストルメント化されたクラスごとに 1 回だけ実行する必要があります。

于 2013-05-29T02:24:35.523 に答える