(从这篇日志开始,恢复博客园的同步更新)

这篇日志没有什么技术含量,只是总结几个基本概念。在软件分析中,我们经常会遇到流敏感(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)时,考虑函数调用的上下文信息。

以上内容主要参考了Data Flow Analysis的维基百科页面和部分论文及书籍。

转载于:https://www.cnblogs.com/quyu/archive/2013/02/14/2912638.html

几个基本概念辨析:流敏感,路径敏感和上下文敏感相关推荐

  1. Linux中的tty、pts、pty等概念辨析

    Linux中的tty.pts.pty等概念辨析 基本概念 tty.pty.pts.ptmx tty(终端设备的统称):tty一词源于Teletypes,或teletypewriters,原来指的是电传 ...

  2. 数据湖概念辨析以及常见技术通览

    这是大数据技术扫盲系列的第二篇[数据湖概念辨析以及常见技术通览] 全文3000字,阅读需要10分钟 一.数据湖概念的起源 数据湖的概念被首次提出是在2010年的Hadoop World大会上,时任Pe ...

  3. 【深度学习】基于Pytorch的线性模型概念辨析和实现(二)

    [深度学习]基于Pytorch的线性模型概念辨析和实现(二) 文章目录 [深度学习]基于Pytorch的线性模型概念辨析和实现(二) 1 线性回归的从零开始实现 2 训练 3 关于with 4 关于w ...

  4. 【深度学习】基于Pytorch的线性模型概念辨析和实现(一)

    [深度学习]基于Pytorch的线性模型概念辨析和实现(一) 文章目录 1 为什么要谈线性回归? 2 建立模型基本形式 3 实现3.1 损失函数3.2 解析解3.3 小批量随机梯度下降3.4 矢量化加 ...

  5. c++I/O流的概念和流类库的结构

    I/O流的概念和流类库的结构 程序的输入 程序的输出 C++输入输出包含以下三个方面的内容 C++的I/O对C的发展--类型安全和可扩展性 与iostream类库有关的头文件 在iostream头文件 ...

  6. c++中的IO流(流的概念和流类库的结构,标准的输入输出流)

    流的概念和流类库的结构 程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件 c++输入输出包含以下三个方面的内容 对系统指定的标准设备的输入输出.即从键盘输入数据, ...

  7. 编译型与解释型、动态语言与静态语言、强类型语言与弱类型语言概念辨析

    编译型与解释型.动态语言与静态语言.强类型语言与弱类型语言概念辨析 转自:https://blog.csdn.net/u010533843/article/details/76215487 编译型和解 ...

  8. jdk,jre,ide概念辨析

    jdk,jre,ide概念辨析 1.jdk是什么?里面有什么东西? jdk,英文全名是java development kit(java开发工具包).它是工具程序和文档的集合.里面有java工(.ex ...

  9. CPU 主频,核数 参数解读 物理CPU,逻辑CPU,物理核 概念辨析

    Q1: CPU高主频好还是多核数好? 游戏需求 如果是主打游戏,由于游戏需要的是最简单粗暴的计算工作,这方面多核心有点无用武之地.因此,目前主流游戏都是双核心调用,四核或者更多核心的比较少. 也就是说 ...

最新文章

  1. 解决LC_ALL: 无法改变区域选项 (UTF-8): 没有那个文件或目录的问题
  2. java sqlhelper_java版sqlhelper(转)
  3. sublime_REPL使用及安装教程(解决Sublime无交互问题)
  4. Verilog功能模块——取滑动平均值(使用寄存器组)
  5. 手写弹出框,设置遮罩,布局设计。
  6. mybatis中LIKE模糊查询的几种写法以及注意点
  7. Spring Boot集成Swagger
  8. 大连理工大学计算机科学世界排名,喜忧参半!2021年5月ESI世界大学排行榜,21个学科排名数据分析!...
  9. 关于NI CompactRIO自定义模块中FPGA与Labview FPGA中编程的一点理解
  10. 学习笔记(1):FFmpeg打造Android万能音频播放器-实现变速变调功能(二)
  11. 进一线互联网大厂担任架构师,需要掌握哪些核心技能?
  12. 猫脸关键点检测Baseline【阿水】
  13. Android源码分析-PackageManagerService(PMS)源码分析(三)- queryIntentActivities函数来查找activity
  14. 华为服务器rh2285v2重装系统,安装Windows_Server_2012_R2(RH2285_V2).doc
  15. 色彩心理学(转载)以后也许有用~
  16. 注册验证码短信收不到是怎么回事
  17. 使用xpath爬取学院新闻
  18. 算法与数据结构学习(46)-B树、B+树和B*树
  19. HTML中设置图片或者文档路径,html怎么用background相对路径设置背景图片
  20. MyTest.axf section `.text‘ will not fit in region `Flash30‘

热门文章

  1. mysql在线检测失败_一则线上MySql连接异常的排查过程
  2. eclipse不支持泛型_C++ 泛型编程(一)
  3. Nacos-环境隔离
  4. Nginx的events块指令讲解
  5. 添加tomcat7插件设置jdk编译版本
  6. 数据库-优化-MYSQL执行引擎介绍
  7. 数据库-null值和notnull操作
  8. 项目整合一级缓存和二级缓存
  9. Spring Boot整合Spring Data Redis-整合步骤
  10. 工厂方法 coding