流敏感,路径敏感和上下文敏感

转载自蛐蛐的博客

这篇日志没有什么技术含量,只是总结几个基本概念。在软件分析中,我们经常会遇到流敏感(flow-sensitive),路径敏感(path-sensitive)和上下文敏感(context-sensitive),这几个概念都主要出现在Data Flow Analysis中(或data flow的变型,如Taint Analysis等)。

流敏感(flow-sensitive):指的是考虑程序语句执行的顺序,例如在数据流分析中的指针别名(Pointer Alias)分析中,一个非流敏感指针别名分析可能得出“变量x和y可能会指向同一位置”,而流敏感指针别名分析得出的结论类似于“在执行第20条指令后,变量x和y可能会指向同一位置” 。所以,一个非流敏感指针别名分析不考虑控制流,并认为所发现的别名在程序所有位置均成立。

路径敏感(path-sensitive):指的是依据条件分支语句的不同谓词,计算不同的分析信息,也就是说,路径敏感将跟踪程序控制流的每一个分支,以记录两个分支路径的不同程序状态。相应的,非路径敏感并不考虑分支之间的区别。简单的路径敏感存在“路径爆炸”(path explosion)或“无穷搜索空间”(infinite search space)的问题。

上下文敏感(context-sensitive):指的是在过程间分析(Interprocedural Analysis)时,考虑函数调用的上下文信息。一个子过程或函数可能会被多个过程调用,那么在不同的过程调用它的时候,对于传给它的实际参数或当时的全局变量有可能会不同,这些被称之为上下文,上下文敏感是考虑了这些不同

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值