程序切片:一种程序分析技术,用来提取与某个特定变量、表达式或程序点的取值/行为相关的那部分代码,以便理解程序、定位缺陷、做安全分析或优化维护。常见类型包括静态切片(不依赖具体输入)与动态切片(基于一次具体运行轨迹)。此外也存在前向/后向切片等变体。
/ˈproʊɡræm ˈslaɪsɪŋ/
Program slicing helps developers find the code that affects a bug.
程序切片能帮助开发者找出哪些代码会影响某个漏洞(缺陷)。
Using dynamic program slicing, the analyst traced how untrusted input flowed through multiple functions to reach a security-critical check.
通过动态程序切片,分析人员追踪了不可信输入如何穿过多个函数,最终影响到一个安全关键的检查点。
slicing 原意是“切片/切开”,在计算机科学语境中借用为“把整体按某个关注点切出一部分”。program slicing 作为术语在 20 世纪 80 年代由研究者系统提出,用“切片”这一直观隐喻来表达:从完整程序中“切出”与某个计算目标相关的最小(或较小)子程序集合。