静态分析器中跟踪分区技术的深入解析
1. 引言
在静态分析领域,跟踪分区是一项关键技术,它能够显著提升分析的精度。然而,传统基于控制流的分区方法虽然精确,但成本高昂。本文将深入探讨如何设计更具针对性且成本更低的分区方法,以及跟踪分区抽象域的相关内容和实际应用。
2. 设计相关分区
基于控制流的分区虽然能带来精确结果,但成本极高。即便参数 κ 非常严格,仅保留有用的分区,在不再需要这些分区时,系统仍会保留它们,导致成本大幅增加,因为每个分区点至少会使成本翻倍。下面介绍两种更具针对性且成本较低的分区方法。
2.1 合并控制流分区
为降低成本,可以将分支点前的跟踪以及超过某个后续控制点的跟踪纳入同一分区。当我们推测基于分支的分区在该点之后不再有用时,就可以这样做。结合最终状态控制分区,意味着在每个控制点,我们只保留一些可能有用的分区。具体来说,引入一个新参数 M ⊆ L,并修改控制流函数 cf,使我们忽略 M 中控制点之前的所有信息。甚至可以使用一个函数 M → B,仅忽略与合并点对应的分支点。例如,对于图 1 中的程序,若 M = {l5},则可得到图 1 - c 中的分区。
2.2 基于值的跟踪分区
分区定义中最合适的信息可能并不在于控制流。例如,为恢复一个可能取值较少的变量与其他变量之间的复杂关系,我们可以根据该变量在给定控制点的值进行分区。这种方法的优势在于,与设计新的关系域相比,实现成本极低。
3. 跟踪分区抽象域
分区 S⋆ 自然地按照“更精细”的概念进行排序,它们甚至构成一个完整的格。
超级会员免费看
订阅专栏 解锁全文
1122

被折叠的 条评论
为什么被折叠?



