具体请见用户手册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. ModelDriven动作(转)

    所谓ModelDriven ,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User 如下: package cn.com.leadfar.struts2.actions; public c ...

  2. zepto animate

    // Zepto.js // (c) 2010-2013 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...

  3. 一点养老APP模式定制系统平台源码

    一点养老APP模式定制系统开发:136.1013.1824电/微:搭建一点养老APP模式定制系统平台.专注于为企业和商家客户提供基于腾讯微信公众平台系统程序和APP等开发服务,中国养老金融50人论坛2 ...

  4. js dorado

    1.dorado http://bsdn.org/projects/dorado7/deploy/sample-center/com.bstek.dorado.sample.Main.d#40350

  5. loading.io一个loading图标网站,跟大家分享

    loading.io是官方网址在首页选一款loading图标,看到左上角的 Try it now中有选中的图标后,可通过光标滑动选择图标大小,然后再点右边的get svg或get css等下载即可

  6. WMWARE下/sbin/scsi_id 返回值为空

    [root@HE1 ~]# /sbin/scsi_id -g -u /dev/sdb 第一种是从VMWARE层面去解决,用文本编辑器修改vmx文件,在vmx文件中任意位置(通常在最后)添加如下行: d ...

  7. Cookie的一些用法

    Cookie的一些用法: package com.stono.servlet.listenerorder; import java.io.IOException; import java.io.Pri ...

  8. NetStream.appendBytes, 走向Flash P2P VOD的第一步

    之前被告知可以自行实现Flash p2p的点播功能, 但一直疑惑, 印象中NetStream并未提供相关方法, 前天看订阅时发现的文章: ByteArray Access to NetStream i ...

  9. pureMVC简单示例及其原理讲解二(Model层)

    本节将讲述Model层. Model层有VO和Mediator组成,非常简单,仅仅包含两个类:UserVO和UserProxy. UserVO中的构造器用于初始化用户的添加(通过email和密码),另 ...

  10. V8 Javascript 引擎设计理念

    Netscape Navigator 在 90 在年代中期对 JavaScript 进行了集成,这让网页开发人员对 HTML 页面中诸如 form .frame 和 image 之类的元素的访问变得非 ...