利用Pin分析程序的动态行为特征

在程序设计和优化过程中,我们通常希望能有工具帮助我们分析热点代码、覆盖率、内存泄露等这些特性,对多线程程序还希望能分析并发性、竞争和死锁等等。但这些特征通常在静态编译时很难获取,而且往往只能在运行时才能确定。Pin是intel开发的动态插桩工具,它提供一套API让我们开发和定制自己的性能分析工具,此外它还被广泛用在体系结构研究、安全等领域。目前intel parallel studio的很多特性便是基于pin开发而成。

 

Pin的工作机制

目前对程序进行剖析(profiling),主要有二种方法:统计硬件计数器和插桩。Pin采用了插装技术,在程序的执行过程中动态插入分析代码。下面的代码片段演示了插装的过程,假设我们要统计程序执行的指令数,可以在程序每执行一条指令时,插入一条count++语句,当程序执行完时,count的值就是程序执行的指令数。

Pin是采用动态编译技术实现动态插装,将分析代码和被分析程序动态编译后放置到代码缓存,然后由cpu动态执行代码缓存里的代码。

 

利用pin统计程序执行的指令数

注释比较详细,很容易看懂

 

Pin主页:http://www.pintool.org

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值