收藏本站
收藏 | 手机打开
二维码
手机客户端打开本文

基于机器学习和程序分析相结合的程序调试技术研究

章程  
【摘要】:如何提高程序正确性是软件工程领域的一个核心问题。由于软件系统的复杂性以及程序缺陷的多样性,尚不存在普适的方法能保证程序绝对正确。一旦缺陷在程序运行中引发故障,则需要通过程序调试定位并修复缺陷。实际的程序调试需要大量人工参与,以交互和迭代的方式进行,其开销约占软件开发和维护成本的50%以上。因此,提高程序调试的效率有助于提升程序正确性,并能显著降低软件开发和维护成本。 鉴于程序调试的重要性,针对当前调试技术效率低下的问题,本文以提高程序调试技术的有效性和实用性作为目标,着眼于实际的交互式和迭代式调试场景,以程序分析和机器学习相结合作为主要途径,提出一套贯穿整个调试过程的新型程序调试技术。根据调试过程各阶段的特点,本文重点研究静态缺陷检测、静态和动态程序切片、基于日志和断点的交互式调试以及自动代码推荐等关键问题。 首先,针对静态缺陷检测误报率过高的问题,本文提出控制流图的精化和扩展方法,使其能更好支持静态警告的筛选和排序,在调试开始阶段为调试人员提供更准确的缺陷警告信息。在控制流图精化方面,本文首次提出利用机器学习发掘分支关联以探测不可达路径的方法。通过程序插装搜集动态分支数据,采用关联规则学习挖掘程序分支的潜在关联,并通过评估与潜在分支关联的一致性检测程序路径可达性。该方法无需分析复杂路径条件,适用于规模较大含有复杂分支谓词的程序,能探测传统方法难以探测的不可达路径。在控制流图扩展方面,本文主要研究控制流图概率化。针对现存方法不适用于面向对象程序中的虚函数调用的问题,首次提出根据静态程序特征预测虚函数动态调用频率的方法——Festival。基于训练程序集合,Festival一方面提取用于表征程序设计意图的特征值,另一方面获取虚函数调用频率,基于两方面数据构建人工神经网络模型,刻画特征值与频率之间的关系。对于有待预测频率的测试程序,Festival仅需提取其静态特征作为模型输入,模型输出即为调用频率估计值。Festival弥补了现存方法无法应用于面向对象程序的缺点,且无需运行待预测程序,不依赖于输入数据的质量,从而有效克服动态分析方法的共有局限性。 然后,在辅助交互式调试方面,本文针对当前常用工具(日志和断点)需消耗大量人力的缺点,提出自动化的分析、改进和生成技术。在日志分析方面,总结出日志使用的两个主要问题:1)冗余日志过多和2)关键日志缺失,首次提出从日志文件提取动态信息与传统静态程序切片相结合的日志切片技术,并基于日志切片提出日志精化技术。日志切片可削减冗余日志,同时产生更精简的程序切片。日志精化自动选择程序位置插入新日志语句,弥补现有日志中缺失的关键信息。另外,针对程序切片计算复杂度较高难以应用于交互式调试过程的问题,本文创新性的提出将程序切片过程分为离线和在线两个阶段。离线阶段进行各类静态程序分析并存储分析结果,在线阶段基于离线分析结果实时计算程序切片,从而大幅度缩短调试人员等待时间,使得日志切片可应用于交互式调试。同时,本文采用增量式和需求驱动式的数据流分析算法,确保离线分析结果与最新程序版本之间的一致性。除日志分析之外,本文结合最近邻搜索、动态程序切片和内存图分析技术,提出断点自动生成方法,节省手工设置断点的工作量。其中,最近邻搜索和动态程序切片用于自动选取断点设置位置,而针对特定程序位置选择特定时机进行内存图分析和生成条件断点的方法为本文首创。自动生成的断点能同时提示与缺陷相关的语句和程序状态,以调试人员熟悉的形式提供全面的辅助信息。 最后,在缺陷修复方面,提出以实时代码推荐的形式解决由于程序员对代码掌握不足所导致的修复效率低下的问题。本文首次指出API参数推荐的重要性,并提出基于程序分析和数据挖掘相结合的解决方案——Precise。根据大规模实际程序的数据分析,提出一组经验性规则,有效限定候选参数的搜索空间,使得Precise具备可行性和实用性。通过对训练程序代码的分析、抽象和转换,Precise预先构建参数使用实例数据库。针对各个参数推荐请求,Precise根据请求上下文,使用最近邻搜索算法从数据库中获取相似上下文中的抽象参数使用模式并进行具体化,实时提供具有适应性的参数推荐。选取API参数是使用API的重要组成部分,而现有代码推荐方法仅关注API方法推荐,因此Precise填补了代码推荐领域的一项空白。另外,在构建Precise过程中获得的实证性调研结果为后续相关工作提供了有价值的参考信息。


知网文化
【相似文献】
中国期刊全文数据库 前20条
1 杜忠 ,鲍百容;宽频带运算放大器的优化设计[J];航天控制;1987年04期
2 叶俊民;谢茜;金聪;李明;张振方;;一种基于模型检验程序分析技术的前端工具研究[J];计算机科学;2010年05期
3 缪力;张大方;;程序模型检测的两阶段框架[J];计算机应用;2007年12期
4 周志远;张大方;缪力;;对Java并发程序进行模型检测[J];计算机工程与设计;2009年02期
5 蒋凡;章磊;陈军成;王建学;;基于程序分析的通信软件模型驱动测试研究[J];计算机工程与应用;2009年31期
6 谭德贵;陈林;王子元;丁晖;周毓明;徐宝文;;通过增大边际权重提高基于频谱的错误定位效率[J];计算机学报;2010年12期
7 代子营;毛晓光;马晓东;王瑞;;基于抽象符号表的内存模型[J];计算机工程与科学;2011年06期
8 吴萍;陈意云;张健;;多线程程序数据竞争的静态检测[J];计算机研究与发展;2006年02期
9 任春德;陈平;彭安斋;;程序分析中的设计模式应用[J];微电子学与计算机;2006年11期
10 李军;李宁宁;;电源板散热片装配工序操作方法改善研究[J];桂林电子科技大学学报;2010年03期
11 周雷;陈克非;;基于符号运算的归纳变量识别与约化[J];计算机工程;2010年24期
12 王光卫;范明钰;;源代码分析技术的理论与实践发展[J];计算机安全;2011年01期
13 徐建军;谭庆平;;寄存器软错误对程序可靠性影响的静态分析[J];计算机科学;2011年01期
14 张伟;张昱;汪晨;付小朋;;一种动态共享数据结构的并发访问控制分析方法[J];中国科学技术大学学报;2011年02期
15 刘利军;阮建敏;谭莲;韩昉;;基础IE及仿真技术在流程优化中应用的研究[J];机械设计与制造;2008年01期
16 李军;贵文龙;;方法研究在G公司作业标准制定中的应用[J];桂林电子科技大学学报;2008年05期
17 陈钢;;一组PLC程序的逻辑错误分析[J];可编程控制器与工厂自动化;2011年07期
18 ;C#入门hello World程序分析[J];电脑知识与技术;2003年13期
19 罗宇翔;电磁兼容程序分析的系统方法[J];空间电子技术;1997年03期
20 姜安莲;QBASIC语言编程分析技巧[J];运城高等专科学校学报;2002年03期
中国重要会议论文全文数据库 前10条
1 沈秀英;杨阜基;;微波电路的计算机辅助设计[A];1987年全国微波会议论文集(下)[C];1987年
2 王克海;尹德钰;李珠;;网架结构几何非线性程序分析[A];第七届空间结构学术会议论文集[C];1994年
3 郭云;陈志华;;改进的张力补偿法在弦支穹顶结构ANSYS程序分析中的应用[A];第三届全国现代结构工程学术研讨会论文集[C];2003年
4 陈扬骥;徐运源;;平板型空间网架抗震分析[A];第一届空间结构学术交流会论文集(第二卷)[C];1982年
5 龙卫国;李少甫;;管节点始屈荷载的有限元分析[A];第六届空间结构学术会议论文集[C];1996年
6 徐干成;郑颖人;谢定义;;各向异性和非均质地基土上浅基础的极限承载力[A];首届全国岩土工程博士学术讨论会论文集[C];1990年
7 杨波;邱杰;;Trilogy加速器OBI系统的QA结果分析[A];2007第六届全国放射肿瘤学学术年会论文集[C];2007年
8 ;前言[A];第五次全国计算机安全技术交流会论文集[C];1990年
9 王广策;曾呈奎;;藻菌纲Achlya bisexualis两种不同的丙酮酸激酶基因(pyk1和pyk2)的发现以及全序列测定[A];新世纪 新机遇 新挑战——知识创新和高新技术产业发展(上册)[C];2001年
10 黄再满;;复合材料层合壳体层间应力的弹塑性有限元法及其分析[A];第十届玻璃钢/复合材料学术年会论文集[C];1993年
中国博士学位论文全文数据库 前10条
1 章程;基于机器学习和程序分析相结合的程序调试技术研究[D];上海交通大学;2013年
2 姜淑娟;异常传播分析技术及其应用研究[D];东南大学;2006年
3 马晓东;C程序内存错误静态分析技术研究[D];国防科学技术大学;2009年
4 赵岭忠;基于约束的Prolog语义及其在Prolog程序测试、分析及验证中的应用研究[D];西安电子科技大学;2007年
5 肖庆;提高静态缺陷检测精度的关键技术研究[D];北京邮电大学;2012年
6 胡燕;编译过程安全性基础研究[D];中国科学技术大学;2007年
7 凌翔;需求模型和程序间行为一致性的比较检测[D];武汉大学;2013年
8 陈立前;基于区间线性抽象域的可靠浮点及非凸静态分析[D];国防科学技术大学;2010年
9 李必信;程序切片技术及其在面向对象软件度量和软件测试中的应用[D];南京大学;2000年
10 朱剑林;ALICE实验在线和离线数据系统的软件质量和安全的研究[D];华中师范大学;2013年
中国硕士学位论文全文数据库 前10条
1 游超;基于控制流信息指导的可疑程序分析技术研究[D];解放军信息工程大学;2013年
2 付小朋;共享资源声明的并行语言程序分析技术研究[D];中国科学技术大学;2010年
3 黄毅;SNL语言的部分求值器及其应用研究[D];吉林大学;2006年
4 韩枫;钢筋混凝土巨型框架箱形节点试验分析[D];重庆大学;2004年
5 王涛;基于GPU的程序分析与并行化研究[D];解放军信息工程大学;2010年
6 韩勤;扬柴公司4102装配线精益生产应用研究[D];南京理工大学;2008年
7 徐刚;工业工程应用于医院流程改进研究[D];天津大学;2006年
8 任永昌;某型航发滑油附件系统修理工时定额研究[D];南京航空航天大学;2008年
9 周志远;Java并发程序的模型提取与模型检测技术研究[D];湖南大学;2009年
10 温馨隆;H公司制造模式诊断及改进方案[D];广西大学;2007年
中国重要报纸全文数据库 前10条
1 张付标;认真对待 有备无患[N];检察日报;2006年
2 郑晓春;以科学家揭示嗅觉奥秘[N];科技日报;2008年
3 记者 陈佳木;奥威使一汽的开发能力提高了多少?[N];中国石油报;2005年
4 ;什么是编译器[N];中国计算机报;2002年
5 本报记者 周源;HPC选型测试从应用出发[N];网络世界;2010年
6 陈铁华 田浩军 张玉德 齐福臣;春风化雨润无声[N];唐山劳动日报;2007年
7 浙江 赵国龙 顾鹏尧;FoxBASE攻关五要点[N];电脑报;2003年
8 季芳;行政诉讼调解是诉讼经济的要求[N];江苏法制报;2006年
9 ;飞跃函数参数及调用难关[N];电脑报;2007年
10 安徽 张代辉;实时监控硬盘温度——HDD Temperatuer Pro[N];电脑报;2002年
中国知网广告投放
 快捷付款方式  订购知网充值卡  订购热线  帮助中心
  • 400-819-9993
  • 010-62982499
  • 010-62783978