問題タブ [java-bytecode-asm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
917 参照

java - 実行時に複数の Java クラスを ASM と組み合わせる

複数の Java クラスを 1 つにマージしたいと考えています。ASM のドキュメントとhttp://www.jroller.com/eu/entry/merging_class_methods_with_asmを読みましたが、目標を達成する方法がわかりません。

これに関するより詳細な例はありますか?

ありがとう

0 投票する
1 に答える
226 参照

java - ASM-Bytecodeの訪問者を数人積み上げる簡単な方法はありますか?

私は現在、クラスのメソッドごとに、バイトコードをインストルメント化するために、.classファイルに対して数人の訪問者を実行する必要があるコードを実装しています。現時点では、MethodRenamerVisitorを実装したばかりですが、これはすでにかなり厄介になっています。

現在、他の訪問者を各BytecodeMethodsに適用したいと考えています。私はこれを過度に複雑にしていますか?私が次のような形をとることができれば理想的です。

そのため、実行したいすべての訪問者を簡単にスタックでき、最終的にはそれらをディスクに保存する必要があります。訪問者の一人一人が訪問しているメソッドを追加/削除/変更することを覚えておいてください!

0 投票する
1 に答える
89 参照

java - Eclipseは、ASM4.0で非通知パラメーター名を表示します。これを修正する方法は?

EclipseIDEからASM4.0を使用する場合、取得するのは次の非通知パラメーター名だけです。 ここに画像の説明を入力してください

どうすればこれを修正できますか?過去にライブラリのソースコードの一部を調べたことがありますが、覚えている限り、それらは本物の名前を持っているように見えたので、これは私がロードしていないものに違いないと思いますか?

R:JavaDocをアタッチすると、変数名の問題が解決したようです。ただし、明確にするための小さな謎がまだあります。

APIを使用する場合、ClassNode.methodsはList型であるように見えます。しかし実際には、そのソースコードを見ると、実際にはリストであることがわかります。

他に足りないものはありますか?この問題は、Javaのジェネリックスの具体化の欠如に関連している可能性があることを認識しています。これらのリストが実際に何を表しているかを知るには、他の種類の情報が必要ですか?

ここに画像の説明を入力してください

0 投票する
1 に答える
582 参照

java - ASMバイトコードを使用したテスト

メソッドの一部にいくつかの命令を追加したいクラスをインストルメントしているとしましょう。たとえば、訪問者Vを開発して、メソッドに存在するメソッド呼び出し命令の名前をからに変更しC.m()たい場合を考えてみましょC.n()C.n_detour()

V実行した後C、実際に望ましい結果が得られることをテストする最も簡単な方法は何でしょうか?ここでは、xUnitスタイルのテストについて話しています。

TraceMethodVisitor最初は、ひっくり返して自分の文字列と比較できると思いCましたが、テストとはほとんど関係のない「装飾」命令(行番号など)がたくさんあることがわかりました(を参照)。TraceClassVisitorの出力をフォーマットします)。

C.n_detour()理論的には、aの存在と非存在の両方を実行してチェックする訪問者を作成できることはわかっていC.n()ますが、上記のアプローチに沿ったものを使用したいと思います(命令ごとの命令を比較します)。

ASMのTreeAPIを調べましたが、それらのdecoration手順もそこに表示されているため、それほど良くは見えません。

ASMを使用した過去のコードテストの経験がある人はいますか?

0 投票する
3 に答える
178 参照

java - TraceClassVisitor の出力のフォーマット

asm ライブラリを使用してメソッドのバイトコードをきれいに印刷したいとしましょう。

を通じてTraceClassVisitor次のようになります

今、事は私が気にすることだけです

他のすべては私にはほとんど関係がないので、それらを一掃したいと思います。

を継承して不要なものをフィルタリングすることを考えましTraceMethodVisitorたが、実際には final クラスであることが判明しました (残念!)。

の出力をフォーマットする方法はありますTraceClassVisitorか? そうでない場合、私が気にしないものを除外するための最良のアプローチは何だと思いますか?

0 投票する
4 に答える
8439 参照

java - ASM バイトコードでメソッドをきれいに印刷する

特定のメソッドの内容のみを印刷しようとしています (成功していません) 。次のコードは、ほとんどのトリックを行います。

で実行する

その結果

私が手に入れたかったのはただ

署名、コメント、その他一切なし。どうすればそれを達成できますか?

0 投票する
1 に答える
2017 参照

eclipse - Eclipse: エラー (Bytecode Outline) SOURCE FILE [in PROJECT] がプロジェクトのビルド パス上にありません

ASM Eclipse プラグインをインストール (および再起動) したところ、バイトコード アウトラインが改善され、JRE クラスに使用できますが、自分のコードを見ると、タイトルにエラー メッセージが表示されます。

私の Java プロジェクトは [自動ビルド] にあり、ソース ファイルにエラーはなく、プロジェクトのプロパティの Java ビルド パスで定義されたデフォルトの出力フォルダーにクラス ファイルが表示されます。

0 投票する
2 に答える
170 参照

java - Polymorphic call: resolving target method from bytecode

Given Java bytecode and ASM bytecode analysis framework,
how can I resolve a target method when polymorphic call occurs?

For instance:

The following bytecode is generated for the latter line:

This instructure targets a parent method.
But the actual method is ClassB.foo().

How can I resolve the "real" method that will be called?

0 投票する
3 に答える
1995 参照

java - Dalvik 用の ASM または CGLIB アナログ

Dalvik バイトコードに使用できる CGLIB アナログを探しています。Androidの世界にそのようなライブラリはありますか?

おそらく、CGLIB の結果をその場で Davlik バイトコードに変換する方法はありますか?

0 投票する
5 に答える
1697 参照

java - Javaでのエイリアス解析

誰かが私にJavaのエイリアス解析のフレームワークまたは実装を教えてもらえますか?asmフレームワークを見ましたが、データフロー分析と制御フロー分析しか提供していません。

更新:興味がありますが、Findbugsがエイリアス分析を行うかどうか誰かが知っていますか?