Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Static analysis 可达性与符号执行_Static Analysis_Code Analysis_Symbolic Execution - Fatal编程技术网

Static analysis 可达性与符号执行

Static analysis 可达性与符号执行,static-analysis,code-analysis,symbolic-execution,Static Analysis,Code Analysis,Symbolic Execution,现在我对符号执行(SE)和可达性分析(RA)感到困惑。正如我所知,SE使用符号执行一些代码,以达到具有分支条件的每个分支。RA可以用来找到每个分支的可达性,对吗?使用RA时,我们可以提取每个分支的分支条件。如果是,它们之间有什么区别?他们能快点吗?它们都是静态分析吗 谢谢,Eve符号执行不是静态的,它以符号方式执行程序。 出于性能方面的考虑,像klee这样的符号执行工具不会 解决遇到分支时的分支条件。它使用了一种廉价的分析,以确定它是否有可能达到。 当到达程序的出口时,它将尝试生成一个测试用例。

现在我对符号执行(SE)和可达性分析(RA)感到困惑。正如我所知,SE使用符号执行一些代码,以达到具有分支条件的每个分支。RA可以用来找到每个分支的可达性,对吗?使用RA时,我们可以提取每个分支的分支条件。如果是,它们之间有什么区别?他们能快点吗?它们都是静态分析吗


谢谢,Eve

符号执行不是静态的,它以符号方式执行程序。 出于性能方面的考虑,像klee这样的符号执行工具不会 解决遇到分支时的分支条件。它使用了一种廉价的分析,以确定它是否有可能达到。 当到达程序的出口时,它将尝试生成一个测试用例。 如果收集的约束从起点(主功能)到
出口是可满足的,那么将给出一个测试用例,否则出口是不可到达的。SE使用可达性分析生成测试用例来覆盖代码。

符号执行是在不执行程序的情况下完成的。因此,这是静态分析

良好的符号分析将计算每个程序点的路径条件。一个更好的将能够对路径公式进行推理,以证明它是可行的(程序点是可到达的)或不可行的(程序点是死的)


与编译代码的执行率相比,符号执行往往非常慢。

可达性分析主要用于查看模型是否能够达到某个状态。然而,符号执行是一种静态分析技术(有时也是动态的,就像KLEE所做的那样),用于查找程序/源代码中的所有路径