Valgrind学习
Valgrind与其他DBI(Pin, DynamoRIO)的区别
我们需要了解DBI的几个
D&R
Disassemble-and-Resynthesise
反汇编后重新组装
Valgrind采用这种方式,将Client中的代码全部翻译成IR,然后在IR级别进行instrument,最后将IR翻译成机器代码执行。
如果Client中的一段代码被翻译成IR,那么原来的native code就不再存在了,以后也不会再使用到。
Native Code --> IR --> IR --> Machine Code
^ ^ ^
| | |
| | |
translate | |
| |
instrument |
|
translate
C&A
Copy-and-Annotate
拷贝并添加注解
将Client中的native code原封不动地拷贝过来,并且对于每条指令都添加相应的注解,以解释这条指令的效果。
DynamoRIO是通过给每条指令添加一个额外的data structure;
Intel Pin是通过提供相应的获取指令相关信息的API;
这些添加的注解可以指导进行相应的instrument,并且底线是不影响原来的native code的执行效果。
Valgrind的IR
进行IR扫描时单元,在Valgrind 3.0.0版本之前,是basic block(单入口,单出口);
而在之后的版本中,换成了super block(单入口,多出口);
IR的特点是:
architecture-neutral
D&R
single-static-assignment(SSA)
每个IR block包含一组statements的列表,而每个statement又包含多个expression。
expression是pure的,即不依赖外部状态的。
expression可以是tree-IR,也可以是flat-IR,二者的区别在于:
tree-IR: complicated
flat-IR: simple, but need to introduce temporaries, and one tree-IR will expand to several flat-IR expressions.
but they(tree-IR) can also be flattened by introducing statements that write intermediate values to temporaries.
Valgrind学习的更多相关文章
- valgrind 使用入门
近期在学习使用valgrind 来定位性能问题,记录一下整个操作过程以及涉及到的工具 一般在机器上都会预装valgrind 工具 使用callgrind 工具检查程序的调用情况,例如使用valgrin ...
- valgrind 性能测试工具学习使用
一.valgrind简介 Valgrind工具套件提供了许多调试和分析工具,可帮助您使程序更快,更正确.这些工具中最受欢迎的是Memcheck.它可以检测许多与C和C ++程序中常见的内存相关的错误, ...
- 值得学习的C语言开源项目
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工 ...
- DBus学习笔记
摘要:DBus作为一个轻量级的IPC被越来越多的平台接受,在MeeGo中DBus也是主要的进程间通信方式,这个笔记将从基本概念开始记录笔者学习DBus的过程 [1] DBus学习笔记一:DBus学习的 ...
- 漫谈C语言及如何学习C语言
抄自:http://my.oschina.net/apeng/blog/137911 目录:[ - ] 为什么要学习C语言? C语言学习方法 1,参考书籍 2,动手实验环境搭建 3,网络资源 附录 一 ...
- RHCA学习笔记:RH442-Unit8进程与调度
UNIT 8 Processes and the Scheduler 进程与调度 学习目标 A. CPU cache 与Service time之间的关系 B. 分析应用程序使用CPU cach ...
- RHCA442学习笔记-Unit11内存回收
Unit 12 Memory Reclamation 内存回收 学习目标: A. 了解和调整内存回收 ...
- [转贴]漫谈C语言及如何学习C语言
抄自http://my.oschina.net/apeng/blog/137911,觉得很有用,收藏它 目录:[ - ] 为什么要学习C语言? C语言学习方法 1,参考书籍 2,动手实验环境搭建 3, ...
- C++内存管理学习笔记(7)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
随机推荐
- legend2---17、legend2里面怎么面向对象
legend2---17.legend2里面怎么面向对象 一.总结 一句话总结: mvc本身挺优:本身mvc的开发模式,就算是面向过程下也还行,如果面向对象那就更加棒了 实体类无需属性:由于php的生 ...
- c/c++ int 范围的原因
在C语言中, signed char 类型的范围为-128~127,每本教科书上也这么写,但是没有哪一本书上(包括老师)也不会给你为什么是-128~127,这个问题貌似看起来也很简单容易, 以至于不用 ...
- JQuery Mobile 图片布局
JQuery Mobile 图片布局 1.实现效果
- Python Numpy线性代数操作
Python Numpy线性代数函数操作 1.使用dot计算矩阵乘法 import numpy as np from numpy import ones from __builtin__ import ...
- PAT甲级——A1140 LookAndSaySequence【20】
Look-and-say sequence is a sequence of integers as the following: D, D1, D111, D113, D11231, D112213 ...
- camunda
Camunda BPM 用途: 流程管理.流程解决方案 支持语言: java ,nodejs 入门指导:1.https://docs.camunda.org/get-started/quick-s ...
- Spring import配置文件使用占位符
import使用占位符 连接池切换导入配置的代码: <import resource="classpath:META-INF/spring/spring-${db.connection ...
- Python之小测试:用正则表达式写一个小爬虫用于保存贴吧里的所有图片
很简单的两步: 1.获取网页源代码 2.利用正则表达式提取出图片地址 3.下载 #!/usr/bin/python #coding=utf8 import re # 正则表达式 import urll ...
- linux 下新建文件自动加锁的解决办法
导致文件夹里面无法保存别的文件 sudo chmod 777 -R 文件或目录
- phpstorm提示phalcon语法
先安装phalcon,将phalcon的扩展php_phalcon.dll添加到PHP的ext目录下,这个不做赘述,网上教程很多 下面直接安装phalcon-devtools, 1,分别下载phalc ...