2

通常、LLVM IR を変更する場合は、パスを記述する必要があります。ただし、より高度なツールを使用すると簡単にパスを作成できる場合、自分でパスを作成するのはやり過ぎになることがあります。

たとえば、誰かがプログラム内のすべてloadとすべてをログに記録したいと思うかもしれません。storeそのためには、ロギングを行うコードを挿入する必要があります。より高いレベルのツールがあれば、必要なものを書くためのコールバックを提供できます。したがって、この場合、たとえば、各ロードとストアで何をすべきかをツールに伝えるために入力できる関数をOnLoad提供できます。OnStoreそのようなツールは存在しますか?

したがって、基本的には、ダイナミック バイナリ インストルメンテーション ツールによって提供されるものに似たものが必要ですが、コンパイル時のコード インジェクションのために LLVM で動作します。

4

1 に答える 1

2

そのような場合は、LLVM の代わりに PIN を使用することを検討する必要があると思います: http://www.pintool.org/

PIN を使用すると、命令、基本ブロック、関数、トレース、さらには共有ライブラリのロード/アンロードなど、いくつかの粒度レベルで計測/分析コードを挿入できます。アプリケーションをコンパイルする必要がないため、より実用的な方法である可能性があります。たとえば、オープンソースではないプログラムを分析できます。

Windows 用と Linux 用の PIN のバージョンがあります。

PS: 別の便利なツール: http://eces.colorado.edu/~blomsted/llvmpin/llvmpin.html

于 2012-09-30T00:53:56.817 に答える