Pin : 快速入门

来源:互联网 发布:vscode nodejs 调试 编辑:程序博客网 时间:2024/06/05 07:28
友情链接:Pin 2.14 User Guide

什么是instrumentation
向程序中插入额外的代码来收集程序运行时状态
用于:程序分析,错误检测,调试;架构研究,处理器、缓存模拟;二进制翻译,改变程序行为,模拟不支持的指令
分类:source code instrumentation (SCI)和binary instrumentation(BI);其中BI又分为静态(运行前插入)和动态(运行时插入)

什么是Pin
Pin is Intel’s dynamic binary instrumentation engine.

pin为Intel公司出品的动态BI引擎,提供框架和API
pintool为运行在pin框架下的程序,负责具体任务,由C/C++编写,调用pin提供的API

快速入门(Mac版)
下载最新版的Pin 
如pin-2.14-71313-clang.5.1-mac,pin命令在该目录下
build 以下目录所有的pintools
  • source/tools/SimpleExamples
  • source/tools/ManualExmaples
Usage: pin [OPTION] [-t <tool> [<toolargs>]] -- <command line>

官网示例中的代码在Mac系统下直接执行会报错:
大概意思是intel保护版权
$../../../pin -t obj-intel64/inscount0.so -- /bin/ls
E: Pin does not support signed applications. To "unsign" the application, copy the original application to a different location, then use: codesign -fs- <target application>

解决办法:
将/bin/ls命令复制到其他地方,如~/;运行以下命令移除签名
$ codesign -fs- ~/ls
replacing existing signature
另外,把命令中的.so改成.dylib(windows下是.dll,动态链接库)
$ ../../../pin -t obj-intel64/inscount0.dylib -- ~/ls
于是可以愉快地查看Mac下的ls命令有多少指令了~
$ cat inscount.out
Count 3442734
0 0
原创粉丝点击