具体请见用户手册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. 会话Cookie及session的关系(Cookie & Session)

    会话Cookie及session的关系(Cookie & Session) 在通常的使用中,我们只知道session信息是存放在服务器端,而cookie是存放在客户端.但服务器如何使用sess ...

  2. zepto.js swipe实现触屏tab菜单

    今天我们来说下zepto.js,有兴趣的朋友可以先进这个网站“http://zeptojs.com/” ,这个可以说是手机里的jquery,但是它取消了hover,加上了swipe及tap这两个触屏功 ...

  3. Git 的是使用入门

    Coding 代码管理快速入门 当项目创建好了之后,我们该如何上传代码到 coding 上呢? Coding 网站使用“ Git 仓库”(类似 github )来管理代码. 其操作原理在于:利用 gi ...

  4. MySQL只恢复某个库或某张表

    在Mysqldump官方工具中,如何只恢复某个库呢? 全库备份 [root@HE1 ~]#mysqldump -uroot -p --single-transaction -A --master-da ...

  5. iPhone应用中加入评分功能

    NSString *str = [NSString stringWithFormat: @"itms-apps://ax.itunes.apple.com/WebObjects/MZStor ...

  6. 使用ProgressDialog创建进度对话框

    ProgressDialog代表了进度对话框,程序只要创建ProgressDialog实例,并将它显示出来就是一个进度对画框.使用ProgressDialog创建进度对话框有如下两种方式. ①如果只是 ...

  7. WPF DataPager控件

    最近在项目中遇到远程加载数据的问题,由于服务器采用分页方式返回数据,因此客户端也相应的制作了一个分页控件.代码相对简单,算做入门级的源码. 效果如图: 初步分析,分页功能只需要3个核心变量:PageI ...

  8. Java中泛型数组的使用

    package com.srie.testjava; import java.util.ArrayList; import java.util.List; public class TestClass ...

  9. The certificate used to sign "" has either expired or has been revoked.

    这句话的意思就是"签名"的证书已过期或已被吊销. 说白了就是有人删除了你的证书,解决的办法就是在创建一个,创建证书有两种办法,. 第一: 在苹果开发者中心,进入自己的账号,请求一个 ...

  10. HDU2602(背包)

    Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...