問題タブ [intel-pin]
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.
c++ - インストルメンテーション コードをコンパイル時に挿入する Pin Like ツール
ご存じのとおり、PINは動的なバイナリ インストルメンテーション ツールです。たとえば、Pin を使用することで、アプリケーション内のすべてのロードとストアを計測できます。Pin のように実行時にではなく、コンパイル時にコードを挿入する同様のツール (より高いレベルの情報を使用し、LLVM パスを記述する必要がない) があるかどうか疑問に思っていました。私は、LLVM 用のこの種のツールに特に興味があります。
c++ - Intel pin: Instrumentate running process
I created a simple pin tool that dumps any win32 CreateFileW calls. It works fine, but when i try to attach it to an already running process, the process simply terminates. Tried with several applications (notepad, wordpad, internet explorer), same result. This is the command i use:
I got a tip to try and turn off multi-threading like this:
but it did not help. Also tried with another, out of the box pintool, didn't work either, so the problem is not in my pintool. Any ideas?
Thanks in advance!
c++ - CreateFile呼び出しを追跡するためのピンツール
CreatFile win32呼び出し(私の場合はCreateFileW)とその戻り値をダンプするためのピンツールを作成しました。次のようになります。
それは興味深い結果をもたらします。たとえば、既存のファイルを開くだけで他に何もしない小さなプログラムでは、次のようになります。
たくさんの異常。1.)実際に2つの呼び出しがあるのはなぜですか?2.)私が間違っていなければ、CreateFileは決して0を返さないはずです。3。)2回目の呼び出しの後、2回(?)を返します。
また、 CreateFileWを1回直接呼び出す単純なc ++プログラムをインストルメント化しようとしましたが、その結果は次のようになります。
開こうとしたファイルが存在しなかったので、戻り値(-1 == INVALID_HANDLE_VALUE)は少なくとも正しいです。
何か案は?前もって感謝します!
c++ - オブジェクト コードの再配置とインテル ピンの相互作用
Intel Pin を使用して C++ 実行可能バイナリを計測し、興味深いイベント (関数呼び出し、スレッドの作成/終了など) を報告するマルチプロセッサ アーキテクチャ シミュレータに取り組んでいます。基本的には、イメージが読み込まれるときにすべての命令の命令デコード キャッシュを構築し、後で命令の実行を分析します。そのため、イメージ読み込み時の命令アドレスが実行時の命令アドレスと同じである (または少なくとも同期して更新される) ことが重要です。
Intel Pin API (IMG_AddInstrumentFunction など) を使用すると、エントリ ポイント、下位/上位アドレスなど、読み込まれたイメージ (実行可能ファイルと共有ライブラリ) に関する情報を取得できます。
しかし、インストルメント化されたプログラムが、ロードされたどのイメージにも属さないアドレスで命令を実行していることに気付きました。調べてみると、ダイナミック ローダー (イメージ /lib64/ld-linux-x86-64.so.2 on 64-bit Centos 6.3 ) がルーチン_dl_relocate_objectを呼び出してメモリ内のメインの実行可能ファイルを再配置していると思われます。
再配置可能なコードとそのすべての必要性を理解しています。これらの再配置がどのように/いつ発生する可能性があるか (ロード時および実行時) についての適切なドキュメント (または簡単な説明/アドバイス) へのポインタが必要なだけで、アーキテクチャ シミュレータでそれらを考慮することができます。言い換えれば、それを達成するために使用されるメカニズム(インストルメント化する必要があるライブラリ関数、条件、または存在する場合はランダム化、再配置を抑制するために使用できる g++ コンパイラ スイッチなど)。PS: x86/x86_64 アーキテクチャのみをターゲットにしています
debugging - Intel Pin が一部の実行された命令のイメージ/ルーチンを識別できないのはなぜですか?
大きなピンツールを作成していますが、2 つの質問があります。
ツール (関連部分のみを以下に要約) は、特定の実行された命令のイメージ/ルーチンを識別できない場合があります。いつ/なぜそれが起こるか知っていますか?
このツール (Barnes-Hut ベンチマークをインストルメント化する場合) は、しばらく実行すると常にメモリ不足 (OOM) エラーで終了します (ただし、ベンチマークをスタンドアロンで実行すると、正常に完了します)。ピンを装備したアプリケーションの OOM エラーをデバッグ/追跡するには、どのツールを使用すればよいですか?
linux - Intel pin ツールを使用して、Linux で実行された命令をカウントするにはどうすればよいですか?
みなさん、私はLinuxだけでなく、ここでも新鮮です。インテルピンツールを使用して、クイックソートプログラムで実行された命令を数えたいと思っています。ただの宿題ですが、readmeドキュメントに書かれているようにこれを行ったとき、
cd source/tools/SimpleExamples make obj-ia32/opcodemix.so システムは make を教えてくれました: *ターゲット `obi-ia32/opcodemix.so' を作成するルールはありません。止まる。また、obj-intel64も試しましたが、何も変わりませんでした。ここで何が起こっているのか誰か教えてください。私はこのピンのことで本当に混乱しています。
c++ - ピン バイナリ インストルメンテーション: 関数名を正確に識別する方法。
PIN を使用したことのある人はいますか? 関数を正確に識別するにはどうすればよいでしょうか (メソッドのオーバーロードが存在する場合)。PIN が RTN_Name() 関数を提供していることがわかりますが、これは関数名を返しますが、確かにそれだけでは十分ではありません…では他に何を使用しますか? RT_Name() と組み合わせて RTN_Address() を使用することで十分でしょうか?
助けてくれてありがとう。
c++ - ピン ツールで関数を呼び出すと、セグメンテーション エラーが発生する
現在、このブログ投稿に基づいて、Linux アプリケーションからの初期化されていない読み取りを検出する Pin ツールを作成しています。
作者のコードはブログからも見ることができます。
これはWindows用なので、Linux対応のものを作ってみました。しかし、アプリケーションでピン ツールを実行すると、セグメンテーション エラーが発生します。奇妙なのは、関数が呼び出されたときにエラーが発生することです (ピン ツールが関数taint_get
内の関数を呼び出しているときにエラーが発生しtaint_define
ます)。初期化されていないヒープ ポインターへのアクセスや、一般的なセグメンテーション エラーのようなポイントが原因ではありません。
セグメンテーション違反のポイントは次のようになります。
コールバック関数は次のようになります。
出力は次のようになります。
ログはここにあります。
現在、Fedora コア 17 x86-64、gcc 4.7.2、およびピン 2.12-58423 に取り組んでいます。
そして、私のピンツールコードはここに添付されています