在 Ubuntu 上使用英特尔的 pin 工具?

在 Ubuntu 上使用英特尔的 pin 工具?

我想在 Ubuntu 12.04 上使用 Intel 的 pin 工具,但在安装时遇到了问题。我从这里下载了 Linux 64 位的 pinhttp://www.pintool.org/,提取包并编译 source/tools/ 中的示例。我现在如何运行 pin?尝试过:

pin
pin.sh
./pin

等等,似乎都不起作用:(我需要安装任何额外的库还是......?谢谢!

答案1

基本上,pin 工具被设计为“即时 (JIT)”编译器,因此架构背后的两个组件是插桩和分析代码。您可能知道,PIN 工具能够独立插桩架构。因此,由于插桩发生在代码序列第一次执行之前,因此您必须直接使用目标基准来处理程序。

以下是一些提示:

首先进入Pin工具的上级目录,pin的一般用法定义如下:

pin [OPTION] [-t <tool> [<toolargs>]] -- <command line>

其次,将 pin 的路径导出到环境中,以便能够在其他地方使用它(在我的情况下是):

export PATH=$PATH:/home/amir/pin-2.12-58423-gcc.4.4.7-linux/

现在您可以在任何地方使用它来固定工具(编译计数、分支采用等)。

例如:有一些示例源,可以开始在

$ cd source/tools/ManualExamples

比如inscount、linux_buffer等使用make命令来g++编译源代码:

make inscount0.test

进而 :

$ pin -t inscount0.so -- /bin/ls

获取 /bin/ls 的输出。

希望这对你有帮助。

答案2

Intel 的 PIN 是一个二进制插装框架,可用于动态插装二进制程序。要指定必须插装哪些指令以及使用哪些指令,您可以指定要插装的 pintool。实际上不需要进一步的“安装”。

下面是 README 文件中有关如何使用 pin 的一个示例:

pin -t obj-intel64/opcodemix.so --/bin/ls

这将检测并运行 /bin/ls,该工具的输出位于 opcodemix.out 中。

答案3

您的主机架构是 64 位 (amd64) 吗?如果是,您需要添加 32 位 (i386) 支持,因为 pin 是 32 位程序。

$ file pin
pin: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, stripped

首先向 dpkg 添加架构支持。

$ sudo dpkg --add-architecture i386
$ sudo aptitude update   # or apt-get if you use that

然后安装所需库的 i386 版本。你可能需要:

  • libc6:i386
  • libstdc++6:i386
  • libgcc1:i386
  • libelf1:i386
  • libdw1:i386

查看英特尔网站上的 Pin 用户指南,特别是 Linux 库部分。或者,您可以启动 i386 Ubuntu VM 并使用它,而不必污染您的 x64 库空间。

相关内容