推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

一种符号执行制导的循环内界分析方法

更新时间:2019-12-24 16:52:48 大小:1M 上传用户:zhiyao6查看TA发布的资源 标签:循环内界分析 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

循环是计算机中重要的复杂程序结构.很多应用场景要求静态分析循环可能达到的最大迭代次数,即循环边界(Loop Bound).对应技术在文献中被称为循环边界分析(Loop Bound Analysis).现有的循环边界分析均使用保守方式进行外界分析,即产生略高于循环边界的近似值.基于这一现状,本文提出了一种自动地循环内界分析方法,产生略低于循环边界的近似值.当用户综合利用外界与内界分析,能将循环边界值约束到一个统计区间,从而能对分析结果获得更为完整的认识.本文基于循环条件制导的符号执行(Symbolic Execution)技术实现了循环内界分析,该技术的本质在于它能够利用符号执行符号化推导程序执行约束的特点,准确求解循环在程序所有合法输入条件下的边界值,并由生成的测试用例来保证该边界值一定可达(即保证是循环内界).本文对符号执行制导技术进行了优化,并在多组已有研究采用的基准用例集上进行了实例评估,实验结果表明,本文的循环内界分析方法具备准确性和高效性,可以满足应用需求.


部分文件列表

文件名 大小
一种符号执行制导的循环内界分析方法.pdf 1M

部分页面预览

(完整内容请下载后查看)
11 期  
ꢀ  
ꢀ  
ꢀ  
Vol.45ꢀ No.11  
Nov.ꢀ 2017  
2017 11 月  
ACTA ELECTRONICA SINICA  
一种符号执行制导的  
循环内界分析方法  
赵祖威冯世宁汤恩义李宣东潘敏学2  
(1.南京大学软件新技术国家重点实验室江苏南京 210023; 2.南京大学软件学院江苏南京 210093;  
3.南瑞集团公司国网电力科学研究院江苏南京 211106; 4.国电南瑞科技股份有限公司江苏南京 211106)  
ꢀ ꢀ 循环是计算机中重要的复杂程序结构很多应用场景要求静态分析循环可能达到的最大迭代次数即  
循环边界oop Bound对应技术在文献中被称为循环边界分析oop Bound Analysis现有的循环边界分析均使用保  
守方式进行外界分析即产生略高于循环边界的近似值基于这一现状本文提出了一种自动地循环内界分析方法产  
生略低于循环边界的近似值当用户综合利用外界与内界分析能将循环边界值约束到一个统计区间从而能对分析  
结果获得更为完整的认识本文基于循环条件制导的符号执行ymbolic Execution技术实现了循环内界分析该技术  
的本质在于它能够利用符号执行符号化推导程序执行约束的特点准确求解循环在程序所有合法输入条件下的边界  
并由生成的测试用例来保证该边界值一定可达即保证是循环内界本文对符号执行制导技术进行了优化并在  
多组已有研究采用的基准用例集上进行了实例评估实验结果表明本文的循环内界分析方法具备准确性和高效性,  
可以满足应用需求.  
关键词循环边界分析符号执行软件测试  
中图分类号ꢀ TP311ư 5ꢀ ꢀ ꢀ 文献标识码ꢀ Aꢀ ꢀ ꢀ 文章编号ꢀ 0372⁃2112 (2017)11⁃2582⁃11  
电子学报 URLhttp/ / ww.ejournal.org.cnꢀ  
DOI: 10.396 .issn.0372⁃2112.2017.11.003  
A Symbolic Execution Guided Inner  
Loop Bound Analysis  
ZHAO Zu⁃wei1,2 ,FENG Shi⁃ning3,4 ,TANG En⁃yi1,2  
CHEN Xin,LI Xuan⁃dong1,2 ,PAN Min⁃xue1,2 ,ZHAO Chen1,2  
(1.State Key Laboratory for Novel Software TechnologyNanjing UniversityNanjingJiangsu 210023,China;  
.Software InstituteNanjing UniversityNanjingJiangsu 210093,China;  
.NARI Group Corporation State Grid Electric Power Research InstituteNanjingJiangsu 211106,China;  
.NARI Technology Co.Ltd.NanjingJiangsu 211106)  
Abstract:ꢀ Loop is an important program structure in computer.Many applications need to estimate the maximum iter⁃  
ation number of loops in programs by loop bound analysis.Existing loop bound analysis uses conservative methods to derive  
outer loop boundswhich estimates the bounds higher than the real ones.In this paperwe propose an automatic inner bound  
analysiswhich generates bounds slightly lower than the real ones.When users combine the inner bound analysis with tradi⁃  
tional outer bound analysisthey can restrict every real loop bound in an interval and get more information about the loops.  
We implement the inner bound analysis by a scope⁃condition guided symbolic execution.The insight of our technique is that  
when symbolic execution substitutes program inputs by symbols in its derivationit generates loop bounds for all valid inputs  
and generates corresponding test cases that make the inner bounds feasible.We optimize the technique and evaluate it on sev⁃  
eral benchmarks.The results show that the analysis is precise and efficient.  
Key words:ꢀ loop bound analysissymbolic executionsoftware testing  
收稿日期:2016⁃07⁃25;修回日期:2016⁃12⁃16;责任编辑马兰英  
基金项目国家自然科学基金o.61402222,No.61632015国家重点研发计划o.2016YFB1000802教育部高等学校博士学科点专项科研基  
o.20110091120058江苏省产学研项目o.BY2014126⁃03)  
ꢀ 11ꢀ 期  
赵祖威一种符号执行制导的循环内界分析方法  
2583  
程序输入定义成可代表任意值的符号并沿程序的控  
制流推导各中间变量的关系性质当程序中存在多条路  
径时符号执行会创建多个执行状态来追踪各路径下  
的变量关系并记录各路径的条件约束最终利用约束  
求解器onstraint Solver) 来获得覆盖特定路径的测试  
输入本文通过制导符号执行过程使其能够高效地推导  
各循环达到最大迭代目标路径的约束条件从而实现  
循环内界的自动分析同样我们也能生成该约束条件  
对应的测试用例以覆盖循环的最大迭代路径供进一  
步分析与测试.  
本文基于开源符号执行平台 KLEE[9] 实现了自动  
循环内界分析并在多组已有研究采用的基准用例集  
上进行了实例评估实验结果显示本文的循环内界分析  
方法是准确和高效的能满足大多数的应用需求.  
1ꢀ 引言  
ꢀ ꢀ 循环是计算机中重要的复杂程序结构许多应用场  
景要求静态分析循环可能达到的最大迭代次数文献  
中称之为循环边界oop Bound而对应的计算方法被  
称为循环边界分析oop Bound Analysis[1~循环边界  
的使用场景有在程序优化中作为各代码段对全局性  
能影响的依据在程序影响分析中用于进一步分析循  
环中代码的影响范围在实时系统分析中用于估测系  
统各任务的最坏情况执行时间检测触发条件较为苛  
需要深入循环才会发生的软件缺陷等等.  
现有的循环边界分析方法均为外界分析[1,4] 这些  
方法采用较保守的策略在不能准确分析时保证分析  
值一定大于实际循环边界值因此我们称这样的分析  
值为循环外界uter Bound这类外界分析方法特别适  
用于保证实时任务安全性的分析场景即保证实时系  
统中循环的实际最大迭代次数一定不超出分析值然  
外界分析方法并不能测算当前的分析值离实际的  
边界值有多远当外界分析方法不够准确时会因为系  
统预留了过多的计算资源而造成浪费[2~基于这一现  
文 提 出 一 种 循 环 内 界 的 自 动 分 析 方 法 ( Inner  
Bound Analysis该方法尽可能准确地获得循环实际能  
达到的边界值即注重边界值的可达性在不能准确分  
析循环边界的条件下内界分析得到略小于实际边界  
的分析值该方法的意义在于当用户综合利用外界分  
析和内界分析时可以获得实际边界的范围区间从而  
对分析结果有更为完整的认识例如用户可以明确某  
循环边界的具体范围介于内界 495 和外界 511 之间并  
获得该循环达到 495 次迭代的测试用例.  
2ꢀ 符号执行  
ꢀ ꢀ 符号执行( Symbolic Execution) 是一项近年来广受  
关注的[7~4] 软件测试自动生成技术它的基本思想是:  
将程序输入定义成表示任意值的符号并由此推导程  
序各中间数据和执行结果因此各变量值在符号执行  
中均被表示成了输入符号的表达式符号执行通过创建  
执行状态来记录程序中不同执行路径下各变量的符号  
表达式当符号推导遇到一个条件分支时符号执行平  
台会从当前执行状态中复制出一个新的执行状态并  
在新状态中记录条件为假的分支条件约束而当前的  
执行状态会被记录为条件为真的分支条件约束而继续  
推导最终当某一执行状态的推导到达程序出口时符  
号执行平台通过约束求解器求解当前状态的总条件约  
并生成覆盖对应路径的测试用例本节通过一个具  
体的例子来说明这一过程如图 所示.  
本文基于循环条件制导的符号执行ymbolic Exe⁃  
cution技术来实现循环内界分析符号执行技术[5~]  
ꢀ ꢀ 1(给出了一段带循环的示例程序它的控制  
ontrol Flow如图 1(所示在图 1(main 函  
数的入口处符号执行平台将输入变量 表示为可  
代表任意值的符号并建立符号执行的第一个执行状  
符号执行中每个执行状态 个信息域 pccv,  
svex组成具体包括:(1) 程序计数器 ư pc记录了  
执行状态 的当前执行位置;(2)所有非符号变量的具  
体值 ư cv记录了各具体变量到值的映射例如图 1()  
中变量 被赋值为 5;(3)程序中的符号值 ư sv记录了  
符号变量到符号表达式的映射例如示例程序中的变  
在程序入口处被初始化映射为表示任意值的  
符号;(4符号操作表达式 ư ex记录程序中符号变量  
间的关系;(5)当前路径的符号约束 ư 记录覆盖当前  
路径须满足的条件例如示例程序中的 n.对于每一  
个执行状态 符号执行由 ư pc 获得该状态的下一条指  
并由该指令推导更新 中其它各信息域的值King  
等人的工作[6] 定义了这一推导过程在本文中我们将其  
封装为 的成员函数 ư symbolicExecution(),它的返回值  
为经过当前指令更新的状态集特别地在推导过  
程中遇到条件分支例如 if then else 它会产  
生含有不同路径约束的新状态返回状态集这  
里状态 分别记录了 true 分支和 false 分支对应的  
执行状态ư c sư ư c sư ∧┐s  
中的其他信息皆从原状态 中拷贝为节省内存本文方  
法将状态 各信息域直接更新到原状态 里而仅新建状  
我们也称新建的状态为 从而把这一过程定义为  
’} ư forkExecution()因此仅当符号执行遇到条件  
分支时执行状态的数量才会增加.  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载