我想在 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 库空间。