欢迎来到天天文库
浏览记录
ID:36681138
大小:3.68 MB
页数:67页
时间:2019-05-13
《基于JDT的并发程序错误模式检测工具设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于JDT的并发程序错误模式检测工具设计与实现作者:指导教师:封煜佳,骆斌教授贝佳副教授南京大学研究生毕业论文(申请工程硕士学位)南京大学软件学院2011年5月TheDesignandImplementationofCBFinderBasedonJDTYujia,FengSubmittedinpartialfulfillmentoftherequirementsforthedegreeofMasterofEngineering,、-lSUpen,ISeabVPrOf色ssorLUo。BinrrOteLUU。bInAssociateProfessorBEI,JiaSof
2、twarelnstituteNANJlNGUNIVERSlTYNanjing,ChinaMay,2011摘要多线程并发程序是指以线程作为可执行的程序模块,存在若干个可以同时执行的线程的程序。Java语言从一开始就考虑了多线程技术。随着硬件技术的进一步发展以及多核处理器的普遍使用,多线程并发程序也越来越多的被应用于各种项目用于更好的利用多核处理器,以增加程序的性能和效率。然而并发程序固有的运行不确定性使得对于并发程序的错误检测十分的困难。而很多java程序员对于iava线程的误解使得并发错误大量存在。目前对于并发程序中的并发错误的检测主要有两种方式,动态检测以及静态检测
3、。其中动态检测主要检查并发程序在运行时的行为,需要消耗较多的资源。监测代码的开销可能是程序执行的几倍,而且很难保证所有的执行路径都被覆盖。静态检测则不需要程序运行就能检测错误,相对而言更加全面,而且能在开发的早期发现问题。静态检测包括模型检测,静态分析,错误模式匹配等方法。本文提供了一种静态检测的方法,使用并发错误模式匹配的方法来检测多线程并发程序中的并发错误。并发错误模式是指程序员在多线程程序开发中的一些不良的编程实践或者是对语义的错误理解,这些错误被证明造成了并发错误。本文提供的CBFinder总结了一些并发错误模式,并利用JDT提供的AST将这些模式实现为规则对
4、并发程序进行检测。一共包含了22条规则,包括Double—CheckLock问题的检测等。CBFinder利用IBMRationalSoftwareAnalyzer提供的静态检测框架实现,并作为它的一部分发布运行。错误模式匹配的方法用于代码的检测可以很快的定位代码中出现的问题,但是准确率并不高。本文实现的CBFinder就是希望能提出一个快速并且具有高准确率的错误模式匹配工具,它可以快速的并且相对较准确的定位位于多线程并发程序中的并发错误。在目前的静态检测中,很少有工作致力于这一方面。关键词:多线程并发程序,并发错误,静态检测,错误模式匹配,并发错误模式匹配Abstr
5、actGOnCcurentprogramisaprogramthathascollectionsofinteractingthreadswhichcanbee×cutedinparallel。WhileJavaisdesignedtosupporttheconcurrentprogramattheveryfirstwhichhasmultithreadingandcocurencyasitscorefeatures.Innowadays,multiC0reprocessorshasbecomemainstream,manysoftwaresystemsareimple
6、mentedas∞ncurrentprogramstotaketheadvantageofthehardware.However,itisvervhardt0writeacorrectconcurrentprogramandtheerrorproneoftheconcurrentprogramisextreamlydifficultduetotheuncertaintyoftheexecution.JIllnow,th啪aretwomainapproachestofindtheconcurrentbugs.dynamiccheckIngandstaticcheckin
7、g.Weneedtoexcutetheprogramsinordertodothedynamiccheck_ng.--ndmeanwhile,itwillcostmoreresourcestowatchetheruntimestatesthanmerelYruntheprograms.EvenSO,itstillnotsureiftheprogramhasmorecOncurrentbugsafterallthetestcases.Staticcheckingismuchmorethoroughwithoutinvolvi几aexecutIngthe
此文档下载收益归作者所有