第卷期计算机学报32 9Vol.年月0CHINESJOURALFMPTept于路径的死循环检中院所重点实验室北京摘提出了一种语言是否含有该开可行性首先通过遍历控制流图成待查之后以及间联系判断这些符合模在此础上现原型工具并对y组准进结果表明能效地且确率较关键词数据类号/犇犗犐7狀犳犻狋犲犔狅犮犅犪狊犱犘犺犃犾狆狔uYG犛犓犫狉犆犿狌狑犼犵犌犝狏dfbqw’kBvx定情况下才被价引致命限用例难代设几乎都会够质量而即使简单也很容易错止直多误往需执次或者某特问从角度来讲收稿日:;最终修改到本课题得国家自然科基金()和“八六三”高技术研究发展861划项目资助阮辉,男生硕士方向包括程序分析与软件测试动化严俊Z4博理员约束求解、张健导师主要领域推形式法等_maizj@scnhgr书
学报年09环的检测可归结为停机问题,因而是一个不计算〈〉犌=犖犈狊犳也就说没有种通用法能够精确地合表边.×判定给程序否含死循但如果对从则犅犻犼进行些限制我们还以过分析记犲∈代码在度上自动出中别起终目前大部关于研究工作描述次集抽象理论针实际化技术比较少另方面指形式和软件领域…长狆狀犿[1]热点被广泛应试正性验证称+<本文采利这且做了探索将当成错误模完整me并寻找直观来讲无特殊明条断满足体执时仅f认现基样思输沿此想办控流图具相同数据路径包即静态源几乎着存组使得下去第节首先介绍概念括回任2dg、及等;经必3例子展示然该由4何达连接准最后总望标识或者二情况 构:简单之串语需要到嵌套注意犛复都杂建立间型(ContrlFw清晰)常Gaph义块段言函参向所谓bsick公约返唯入口句列其开始束转移虚线假6么全
期阮辉等:析测9图种循环的形式1 3(,)intgcd犿狀{!/whle=f>2;-}s46ru5一段示例代码控制流由可知函数中有个节点、和构成路径〈〉.狆根据犘犼<是该两条检验它们语再犻+句如所“”表后面ab@化简件这都行而给出添加显然∧了不子以采用符号执方无满足因此[]法从往前替换得到初始犐定义在回边确次犅0其指经过或限重复比op狊果那么达单来说部应被体也分结束程序犆犛判断合注犈死模现时意抽象整特某组基本块含对于串接嵌套具支任何
计机学报年0间联些表程序中的死循环模式1 标含形简单(如图)所示a〈,〉犈犆犛犃串接b流上+!犅23端识别嵌套c源控并例对于函数果出现根.gd只可能是基本块条件一直满足且之后体不断执行下去实际或者次超某阈等以记为其sB路径性判在分析通常会遇到很多存极大地降低了效率何否即问题个重要般情况定但我们过限制变量和小节说明[]达来部求解这工具针PAT语言子集使用符号C约束技术种较精确方法器作与编译似主它处理据类型包括整、布尔枚举完义同时组该扩展E此础建立5指结构目前写9y逻辑及线值①4动利自io还给遍扫造抽象树输入初始得历转换最划沿着关详细讨论参6也介考文献绍试检测质就观讲运几需虑被样思由想采静态办无因从查找错误角度发将当特殊码推成寻uptern然都而规合挖掘难估算减少代价避免有信息描述命令Llz:先开策略产生系列验;进步/GNUhwf
期阮辉等基用户指定循环体的最大执行次数死识.()路径生成策略图遍历算法主要有宽度之后对些析2优先和深两种我们实现了这满足某模式般说符同BFSD,并通过验比较其缺点发当测嵌套多时候需保存试空公共非子例如很内部节占量工具LopAnalyzer函〈〉gd终选均包含不可删除为提高此下将会3≠∧∨效率以在程中检查性止做是遇到序分支语句根据但自动化地寻找困难条件判断前否只解决题近似方才进一步扩展即果相求得则它能给GPth犾狅狆犿犪狓犜犻犲狊简描述:所划按照返回集合犛类犆=表示控制流入口放狀狋犖犱每犼∩间采都别队列堆栈来元素个三组犫犐犺犮归约编号;长访问目Ck1 {[]…}←0功形犚狌!wi犈狔抽象b/从取出项因4狉去掉狏5f犅&犉由而导致重复6cu且丢弃该7s犇犵犘8∪添加9犔犎|><+开始于阈值狑犃
计机学报年算法的分析3.4 #dfN0bx这一节简要和GenPathCckr{ms=g-时间复杂性w<&产生所有检验路径,因此其/2度受限于数目由我们制了循环>错误体最大执行次是从犕而能终止对嵌套内外层独立;}每中都可总(注意处指不本身)但程序很多[1]实际上以通常情况下达到个坏结果来看成在接范围输入集合小又条死模式查之前先进判断同将按照测试据类抽象并去掉重样步减少含支带爆炸调运用函否符犻狊犔狅狆犘犪狋犲狉狀些9得无8M原型工具与表TD没标变量任取值基述思想使语言现手动发:+该给定LopAlyz图描框架划块且5过比较选深优遍历参未知存储组作为保持顺…第开始也就后记录件返回还出u直满足点口陷示例段包二找明〈〉6Bi代码应控流如S7
期阮辉行次循环体之后陷入了死工具检测的结果唯于任意输3.和人分析代码得出论一致肯存无限从可以看成功Thera6tsdfolpOuDL:H2率达到而%[];inA1=04x〈,()〉PBE含复杂控制构例如嵌图8 ySc套使实验数据方法困难除上述外我们还对其它些程序两种情进试包括快速排中函错误况部取模整算及版本等近个都能很z线端路径暂找这虽然此在文献给组基准V7但由用来评判非终止性采似策略见前第节通过并将与划子集样合比列表没有运称为干扰属式时间故仅“”示正确地断是√该归否另符号不造漏报也需要定处理足同境IC5GU①至MmF今尚未解决问题相关作名<vW主面gw证明q研究多变阶、项计K产生础Rb利重写系统N9简单现充条件只k/
年好地检测出嵌套循环中的死此外bI.VelroynwEK方法对于含有复杂控制结构程序也无处理[14]等人给了一种基索()证GuptasLTqPBj明非终止性由两部分组成,前缀M和都是限路径m刘磊北京械业版社同时还必须流图该为zNYkU&步:先找到;然后可行进x析看否能导致指判断/与寻不变式价这Q缺点需要通过动态运来枚举7而些并定RH文所F论及工作6 本提静即展开技术存在试数据让某度上直执下去实验果表我们够以其现具自化高较真语言C从效率准确DO将主个面求识别干扰消除集合另考虑扩使得递归函调用句础í应之间参献ZhgJiScf208395张健精计算机学报WXAvd
期阮辉等:基于路径分析的死循环检测 ,犚犝犃犖犎狌犻borni1984M.S犢犑狀0PDcadteHsmhlupgyfw犣犌犪6v犅犮犽犵狉狅犱IF'kL;xTWqNC3BR()j2AZ