Loading... > Pintools 使用手册 --- ## 参考文档 [Intel PinTools 安装使用教程](https://blog.csdn.net/maokelong95/article/details/78974271) [pintool的搭建和使用示例](https://blog.csdn.net/shadothew/article/details/81483249) [Intel Pin基础](https://www.cnblogs.com/long123king/p/3635408.html) ## 下载解压 ```shell wget https://software.intel.com/sites/landingpage/pintool/downloads/pin-3.7-97619-g0d0c92f4f-gcc-linux.tar.gz tar -xzf pin-3.7-97619-g0d0c92f4f-gcc-linux.tar.gz ``` ## 测试(失败) 我们可以 先运行一个 demo 进行测试。在这个例子中我们将生成一个名为 insmix 的工具,这个工具是用来统计应用程序执行的 x86 指令的数量的。通过如下指令打开 insmix 工具所在目录,并生成该工具: ```shell cd pin-3.7-97619-g0d0c92f4f-gcc-linux/source/tools/Insmix make ``` 如果执行成功的话,应该可以在 source/tools/Insmix/obj-intel64/ 目录下找到文件insmix.so。此时我们返回到 pin 的根目录,然后输入如下指令将 insmix 工具附加在 ls 指令上并由 pin 运行 ls 指令: ```shell cd ../../../ ./pin.sh -t source/tools/Insmix/obj-intel64/insmix.so -- ls ``` 运行结束后结果文件输出在 pin 根目录下,即 insmix.out。 这一段是网上的教程,我这里测试失败了,不知道为什么,编译不能通过。 ## 官方测试文档 [pintool_docs](https://software.intel.com/sites/landingpage/pintool/docs/97619/Pin/html/index.html#Pin) 不翻译了,都能看懂。 ```shell To build all examples in a directory for ia32 architecture: $ cd source/tools/ManualExamples $ make all TARGET=ia32 To build all examples in a directory for intel64 architecture: $ cd source/tools/ManualExamples $ make all TARGET=intel64 To build and run a specific example (e.g., inscount0): $ cd source/tools/ManualExamples $ make inscount0.test TARGET=intel64 To build a specific example without running it (e.g., inscount0): $ cd source/tools/ManualExamples $ make obj-intel64/inscount0.so TARGET=intel64 The above applies to the Intel(R) 64 architecture. For the IA-32 architecture, use TARGET=ia32 instead. $ cd source/tools/ManualExamples $ make obj-ia32/inscount0.so TARGET=ia32 ``` ### 示例 统计指令长度 ```sh $ ../../../pin -t obj-intel64/inscount0.so -- /bin/ls Makefile atrace.o imageload.out itrace proccount Makefile.example imageload inscount0 itrace.o proccount.o atrace imageload.o inscount0.o itrace.out $ cat inscount.out Count 422838 ``` 自定义输出文件 ```shell $ ../../../pin -t obj-intel64/inscount0.so -o inscount0.log -- /bin/ls ``` ``` ``` Last modification:January 16th, 2021 at 01:02 pm © 允许规范转载 Support 确定不打赏一下支持博主吗 ×Close Appreciate the author Sweeping payments Pay by AliPay