具体请见用户手册Pin 3.2 User Guide https://software.intel.com/sites/landingpage/pintool/docs/81205/Pin/html/index.html

一、在windows下安装过程:

1、安装Cygwin

Cygwin安装的时候,默认不安装make工具。需要在这一步的时候,使All后面的字变为install,可以保证所有组件默认安装(当然需要的时间也稍长一些)。也可以只选择make的哪个安装包,测试发现只安装这个包是没有问题的。

2、下载pin,解压

3、设置环境变量cygwin64\bin和pin.exe所在的目录

4、启动cmd,执行vcvars64.bat,进入pin下的source\tools\ManualExamples目录,make all TARGET=intel64,编译64位dll。

   启动cmd,执行vsvars32.bat,进入pin下的source\tools\ManualExamples目录,make all TARGET=ia32,编译32位dll。

二、三种级别的跟踪

INS_AddInstrumentFunction指令级跟踪INS_InsertCall

TRACE_AddInstrumentFunction 基本快跟踪,可以用来跟踪BBL
BBL_InsertCall

IMG_AddInstrumentFunction IMG_AddUnloadFunction 映像跟踪

三、一些函数

RTN_AddInstrumentFunction 函数跟踪
RTN_InsertCall

PIN_AddThreadStartFunction 线程开始

PIN_AddThreadFiniFunction 线程结束

PIN_SafeCopy用于将指定数量的字节从源存储器区域复制到目标存储器区域。 即使源或目标区域无法访问(完全或部分),此功能也可确保安全返回到呼叫者。

PIN_AddFollowChildProcessFunction()

PIN_AddForkFunction()

四、其他

1、字符串

KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE,  "string_family","o",
"default_string", "description");

"o"表示命令行参数

pin -t obj-intel64/inscount0.so -o inscount0.log -- /bin/ls

2、

IPOINT_BEFORE 指令之前,或者函数开始的地方

IPOINT_AFTER 指令之后,或者函数ret的地方

3、在Windows上,如果在一个多线程应用程序运行的工具在回调函数中打开一个文件可以发生死锁。

4、Pin有两种模式,一种是JIT(Just In Time),个人理解为实时编译;另一种是Probe,个人理解为Hook。Probe更快,但是可以使用的Pin相关功能更少。

5、修改程序执行流程INS_InsertDirectJump INS_InsertIndirectJump
INS_Delete

6、调试

pin -pause_tool 20 … 开始的时候暂停20秒,这时可以attach

Pin学习笔记--安装及一些基本知识的更多相关文章

  1. HTML+CSS学习笔记 (7) - CSS样式基本知识

    HTML+CSS学习笔记 (7) - CSS样式基本知识 内联式css样式,直接写在现有的HTML标签中 CSS样式可以写在哪些地方呢?从CSS 样式代码插入的形式来看基本可以分为以下3种:内联式.嵌 ...

  2. SystemTap 学习笔记 - 安装篇

    https://segmentfault.com/a/1190000000671438 在安装前,需要知道下自己的系统环境,我的环境如下: uname -r 2.6.18-308.el5 Linux ...

  3. alfs学习笔记-安装和使用blfs工具

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一名linux爱好者,记录构建Beyond Linux From Scratch的过程 经博客园-骏马金龙前辈介绍,开始接触学习 ...

  4. Python基础教程学习笔记:第一章 基础知识

    Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入“p ...

  5. 受限玻尔兹曼机(RBM)学习笔记(一)预备知识

    去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算法原 ...

  6. HTTPS学习笔记一----HTTPS的基础理论知识

    首先推荐一本书,<HTTP权威指南>我就是看这本书入门的,对http协议有了更好的理解,学习https的理论知识我认为需要了解以下几点,需要一步步的深入学习: 1.HTTPS的基本概念? ...

  7. 大数据学习笔记——Java篇之基础知识

    Java / 计算机基础知识整理 在进行知识梳理同时也是个人的第一篇技术博客之前,首先祝贺一下,经历了一年左右的学习,从完完全全的计算机小白,现在终于可以做一些产出了!可以说也是颇为感慨,个人认为,学 ...

  8. cocos2d-js 学习笔记 --安装调试(1)

    目前从国内来看,比较知名的,适合前端程序员使用的游戏框架,基本是 egret 和cocos2d-js;刚好两个框架都学习了下, egret的是最近兴起的一个框架主要使用TypeScript.js语言做 ...

  9. Ant学习笔记(1) 基础知识

    Ant Apache Ant 是一个基于 Java的构建工具. 下载Ant google.baidu.Windows用户下载zip格式.解压即可. Windows安装Ant Ant本质上是一个Java ...

随机推荐

  1. python中numpy对函数进行矢量化转换

    在对numpy的数组进行操作时,我们应该尽量避免循环操作,尽可能利用矢量化函数来避免循环. 但是,直接将自定义函数应用在numpy数组之上会报错,我们需要将函数进行矢量化转换. def Theta(x ...

  2. 前端开发 Grunt 之 Connect详解

    在前端开发过程中,我们需要在开发过程中,将开发中的站点部署到服务器上,然后,在浏览器中查看实际的效果,在 Grunt 环境下,可以直接使用集成在 Grunt 中的 Connect 插件完成站点服务器的 ...

  3. js原生:封装document.getElementByClassName()函数

    //接口封装:封装document.getElementByClassName()函数function getElementsByClassName (cName,domTag,root) {//该函 ...

  4. cf734 E. Anton and Tree

    这个题的题意还是很劲的.搞了好久才知道是怎么变得. (假设已经缩好了点,每次边中间颜色不同的,然后和就和他外面的相同,继续再变这个大的,依次类推,最多就是树的直径D/2) (还是英语水平太弱了(吐槽+ ...

  5. Mysql中日期时间型解析

  6. [bzoj2120][数颜色] (暴力 or 分块)

    Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜 ...

  7. iOS 属性之assign、copy、retain

    参考自:http://blog.csdn.net/getchance/article/details/42213219 参考自:http://zhidao.baidu.com/link?url=Xmn ...

  8. HDU-1430-素数回文

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1431 这题之前做过,又不会做了, 思路先直接暴力,输入a=5 b=500000000得到最大的值为9 ...

  9. return_url和notify_url的区别

    页面跳转同步通知页面特性(return_url特性) (1)   买家在支付成功后会看到一个支付宝提示交易成功的页面,该页面会停留几秒,然后会自动跳转回商户指定的同步通知页面(参数return_url ...

  10. 大咖,我能转行做UX设计师吗?

    前几天,有个朋友找到我,叫我给分析下他适不适合转UX设计.他的专业是建筑设计,之所以要辞职,也就是公司破事多,老板又不看重他.看到UX设计这个行业的前景很不错,想要转行.他说的也没错, 现在的UX设计 ...