問題タブ [soot]
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.
llvm - 静的計測と動的計測の長所と短所
多くの静的および動的計測ツールがあります。すすは、Java バイトコードの静的計測ツールです。Pin と Valgrind は、バイナリ用の動的計測ツールです。
静的計測ツールと動的計測ツールの長所と短所は何ですか? ランタイム パフォーマンスの点では、静的インストルメンテーション ツールの方が優れていると思いますが、動的ツールはより強力です。実力と性能を比べてみてください。
さらに、インストルメンテーション ツールを使用することと LLVM パスを作成することの違いは何ですか?
jvm - JasminのすすバージョンがJasminアセンブリファイルのアセンブルに失敗する
JasminSourceForgeのJasmin2.4のバージョンとSootプロジェクトのJasmin2.4のバージョン(sable.mcgill.caにあり、「jasminclasses」というラベルが付いています)の両方がありますが、Sootバージョン(必要なもの)はそうではないようです。正しく動作しています。
最初にJasminJVMアセンブリにコンパイルし、次にJasminを使用してJVMクラスファイルにアセンブルする単純なコンパイラを作成しました。以前は、JasminのSourceForgeサイトにある通常バージョンのJasminを使用していましたが、うまく機能していました。すべてが正しくコンパイルされ、実行されました。これで、Sootフレームワークを使用して最適化を開始しました。最適化されたコードをクラスファイルに変換し直そうとしない限り、すべてがうまく機能します。
現在Sootを使用しているので、Sootが使用するJasminOutputStreamをサポートするSootバージョンのJasminを使用する必要があります。SootのバージョンのJasminは、入力ストリームを取得する代わりに「.j」ファイルを読み取る「昔ながらの」方法でJasminファイルの処理を処理できるはずのように見えますが、(最初のアセンブルのために)最適化前)、Sootバージョンは失敗します。
私が行った場合
期待どおりに「Generated:MyClass.class」という出力が得られます。
もしそうなら(jasminclassesはJasminのSootバージョンです)
出力を取得します
5行目は.fieldpublicn Iについては何も間違っていません。上に示したように、通常のバージョンのJasminで正常にコンパイルされます。
完全を期すために、その点に関するコードをさらにいくつか示します。
そこにあるものはすべてうまく、通常のジャスミンでうまく組み立てられます。
JasminのSootバージョンが異なる構文を期待しているかどうか誰かが知っていますか?スートとジャスミンに関するほとんどのものと同様に、そもそもWebにはほとんど何もありません。ましてや、私が探しているものはあまりないので、私のグーグルはあまり思いつきません。
よろしくお願いします。ここで本当にイライラしています。次のステップは、SootのJasminパッケージをデバッグし、そこで何が行われているのか、なぜ失敗するのかを確認することですが、これだけのために今のところそれほど遠くまで行く必要はないことを願っています。
scala - ScalaのAOTコンパイルまたはネイティブコードコンパイル?
私のscalaアプリケーションは、整数と倍精度浮動小数点数の大きな配列に対して単純な操作を実行する必要があり、パフォーマンスがボトルネックになっています。さまざまなベンチマークを通じて結果を観察することはできますが、特定の最適化(エスケープ分析など)が開始されたときに正確に指を置くのに苦労しました。私はscalaアプリケーションのAOTコンパイルを実行したいので、特定の最適化を表示または適用(または実装)できます...または可能であればネイティブコードにコンパイルして、境界チェックのようなコーナーを切り取り、それがどうかを観察できます違いを生みます。
私の質問:scalaではどのような代替コンパイル方法が機能しますか?llvm、vmkit、soot、gcjなどのツールに興味があります。現時点でscalaでこれらのツールを正常に使用しているのは誰ですか、またはこれらのメソッドのいずれも現在互換性がないか、維持されていませんか?
dependencies - 分析のポイント - 定義
Soot フレームワークを使用して構築するコールグラフを使用して、いくつかの依存関係分析を実行しようとしています。「ポイントツー」分析を使用するとコールグラフの精度が向上するというガイドを読みました。「ポイント先」分析とは正確には何ですか?また、コールグラフの精度をどのように向上させることができますか?
java - Android向けフロー分析
Android アプリケーション用の制御フロー グラフ ジェネレーターはありますか。(できればオープン ソース) アプリケーションのフロー分析を行いたいと考えています。しかし、そのような静的アナライザーは見つかりませんでした。
そのようなソフトウェアがない場合は、Android アプリの静的解析を行うように拡張できます。その方法に関するいくつかの指針 (特に、制御フロー グラフの作成中に複数のエントリ ポイントと onPause、onDestroy などへの非同期呼び出しを処理する方法) は非常に役立ちます。
ありがとう
java - SOOT を使用しようとしたときの NoClassDefFoundError 例外
SOOT を使用してコール グラフを生成しようとしています。ただし、分析するクラスを渡すと、例外 NoClassDefFoundError がスローされます。コマンドの一部を実行できるようにするために、次の 2 つのチュートリアルを使用して います。 soot-command-line/#obtaining .
SOOT の同じクラスパスに解析対象の Java ソース コードを配置しました。だから私が実行しようとしているとき、私は「。」を使用しました。現在のディレクトリを指定します。以下は私が実行しているコマンドです:
-cp を省略して MainFrame をすぐに呼び出しても、同じエラーが生成されます。
この種の例外がスローされる理由を誰かが知っていますか?
java - Eclipse Soot プラグインから Soot 操作を使用すると、このエラーが発生するのはなぜですか?
初めてすすを試しています。Eclipse プラグインのインストールについては、Web サイトの説明に従いました。無事にダウンロードできたようです。次に、Jimple に変換できるように、単純な Java プログラムで Java プロジェクトを作成しようとしました。しかし、この操作または他のすすの操作を試みると、「選択した操作は現在利用できません」というエラー ダイアログ ボックスが表示され続けます。下の写真:
これが機能しない原因が何であるかはわかりません。Java ビルド パス (下図) には、必要なものがすべて含まれているようです。
以前にすすを使用してこの問題に遭遇した人はいますか? この状況を緩和する方法について何か提案はありますか?
編集:また、Soot サンプル プロジェクト (単純な bodyTransformer) を作成しようとすると、「Problem Opening Wizard」エラーが発生します。
java - Javaで単純な静的コールグラフを作成するには?
Javaのメソッドの実行の流れを分析できるようにするために、単純なコールグラフを生成したいと思います。
たとえば、コード内でメソッド X からメソッド Y に多数のメソッド呼び出しで移動できる場合、メソッド X からメソッド Y への流れを示す呼び出しグラフを生成したいと考えています。
SOOT を使用してみましたが、この必要なコール グラフを取得できませんでした。このような呼び出しグラフを生成するために使用できる API を知っている人はいますか? 私は Eclipse を使用していますが、このツールは多くのプロジェクトで使用する必要があるため、プラグインを使用できません。
助けてくれてどうもありがとう
java - Javaで特定のメソッドを呼び出しているオブジェクトを識別する方法はありますか?
特定のメソッドを呼び出しているオブジェクトを識別できる必要があります。たとえば、次のような場合
変数 label のオブジェクトが実際に l ではなく setText を呼び出していることを識別できるようにする必要があります。メソッド情報を取得するために SOOT を使用しているため、メソッドを呼び出すオブジェクトの型 (この場合は JLabel) を取得することができました。しかし、実際に必要なのは、このメソッドを利用するオブジェクトです。
メソッドを呼び出している実際のオブジェクトを特定できる方法はありますか?