pintool的搭建和使用示例

//全文以ia32为例,intel64需要将涉及到ia32的地方替换成intel64

构建pintool

首先把pintool(C或者C++)写好。然后参照如下格式:

  • (1)将某个目录下的所有tool都构建起来
$ cd source/tools/ManualExamples//这是tool的目录
$ make all TARGET=ia32
  • (2) 将某个目录下的某一个tool构建起来
$ cd source/tools/ManualExamples
$ make inscount0.test TARGET=ia32//inscount0.test必须在上面的目录里
  • (3) 将某个目录下的某一个tool构建起来,但是不运行
$ cd source/tools/ManualExamples
$ make obj-ia32/inscount0.so TARGET=ia32

pintool的使用

一个简单的例子。使用inscount.so来对一个程序执行的指令数进行计数
假设需要被计数的程序为ls(显示主文件夹的文件名字及后缀。关于ls指令可参考这个博客的内容https://www.cnblogs.com/SZ2015/p/7691094.html
指令如下:

$ ./pin -t source/tools/ManualExamples/obj-ia32/inscount0.so -o inscount0.log -- /bin/ls
//此时我为了方便,已经将执行目录设置成了pin的目录,也就是主目录

此时运行计数tool,就可以在终端输出ls程序的指令个数了
这里写图片描述
如果想让执行结果输出到某一个文件,指令如下:

$ ./pin -t source/tools/ManualExamples/obj-ia32/inscount0.so -o inscount0.log -- /bin/ls

输出结果在inscount0.log文件中
这里写图片描述
两次结果相同。

猜你喜欢

转载自blog.csdn.net/shadothew/article/details/81483249