2

-m32 gccオプションを使用して C プログラムをコンパイルしました。ピン ツールを使用してこのプログラムのプロファイルを作成したいと考えています。私のカーネルは64ビットです。

私が試してみました :-

1)pin -t64 <64-bit toolname> -t <32-bit toolname> -- <application>

2)pin -t <32-bit toolname> -- <application>

3)pin -t <64-bit toolname> -- <application>

32 ビット アーキテクチャと 64 ビット アーキテクチャ用に別々にコンパイルされた両方のツールに同じ .cpp ツール ファイルがあります。

ケース 3 では、「読み込めません。アーキテクチャ タイプを確認してください」というエラーが発生しました。ケース 1 と 2 の場合、コマンドは成功しましたが、予期しない出力が生成されました。たとえば、この場合、ファイルに書き込まれたイメージの名前は空ですが、64 ビット アプリケーションで実行すると適切な結果が含まれています。この場合、ピン ツールをセットアップする正しい方法はどれですか?

4

3 に答える 3

2

ピンの 32 ビット ライブラリ (つまり instcount0 ) を 64 ビット アーチでコンパイルするための回避策を見つけました。

ライブラリの構築に関連する構成ファイルを変更しました。

/opt/ にピンがあるので、編集しました

/opt/pin-3.0-76991-gcc-linux/source/tools/Config

38行目

# Define the architecture of the target
# ; TARGET ?= $(HOST_ARCH)
TARGET = ia32
ifeq ($(TARGET),ia32)
    BITS := 32
else
    BITS := 64
endif

ターゲットをia32に変更しました。build 後に問題なく動作します。

于 2016-11-06T14:53:34.100 に答える
0

ピン制御下でプログラムを開始する際に知っておくべき注意点がいくつかあります。

1) pintoolは、インストルメント化されたプログラムと同じアーキテクチャでコンパイルする必要があります(したがって、プログラムが 32 ビットの場合、pin ツールは 32 ビットでなければなりません)。

2) システムが 64 ビット OS で 32 ビット プログラムを実行するように設定されていることを確認します (一部の Linux システムではia32-libs、32 ビット プログラムを実行する必要がある、またはその準備が必要です (例sudo dpkg --add-architecture i386)

3) PIN に必要なすべてのライブラリがあることを確認します。

4) pin.shを使用する

コマンドは次のようになります。

  • pin -t pintool.so -- <program> <program-options>

それでも問題が解決しない場合は、ピン自体ではなく、ピンツール コードに問題がある可能性があります。

プログラムで簡単な例 ( などinscount) を試しましたか?

于 2016-02-18T09:29:48.877 に答える