基于静态类型分析的Java程序函数调用图构建方法研究

来源 :湖南大学 | 被引量 : 0次 | 上传用户:csmeteor135
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
函数调用图是编译期对程序中函数调用关系的一种静态描述,在函数调用图中,节点表示函数,边表示函数之间的调用关系。函数调用图在软件工程领域有广泛的应用,例如编译优化,过程间数据流分析,回归测试,程序理解等。Java语言的多态机制及子类对父类函数的覆写,使得无法在编译期静态确定虚函数调用点中接受对象的实际类型,从而无法实现接受对象和目标函数之间的静态绑定,因此Java程序的函数调用图只是对实际运行时函数调用关系的一种约近。如何提高虚函数调用的解决效率,减少函数调用图中结点和边的数量,从而使构建的函数调用图能够更准确的反应程序执行时函数之间的实际调用关系,一直是程序分析领域的热点和难点问题。本文首先结合实例对类层次分析,快速类型分析,和XTA三种基于静态类型分析的虚函数调用解决策略进行了详细说明,并在我们实现的构建函数调用图的原型系统上通过实验比较了上述三种解决方法的分析精度和分析效率。实验证明了XTA方法能够提高快速类型分析的分析精度,并且证明了快速类型分析能够实现分析精度和分析效率的最好均衡。本文在原XTA方法的基础上,根据类型传播和类型可达思想提出了一种改进的xTA方法。改进方法用增量式的方式米考虑程序中函数的可达性,并在过程内类型传播的基础上,对每个可达函数中的实例化对象类型给定一个可达变量的集合,从而进一步约减虚函数调用点中接受对象的可能类型。通过实例,说明了改进方法对原有xTA方法分析精度的提高。本文进一步发展和完善了F.Tip提出的基于集合的算法描述框架,并给出了在此框架下类层次分析,快速类型分析,XTA和本文提出的改进XTA的算法描述,从集合论的角度证明了改进方法相对原方法在分析精度上的提高。本文设计并实现了一个构建函数调用图的原型系统,该原型系统基于对Java程序的字节码分析,目前能够实现程序的类层次图和基于类层次分析,快速类型分析和XTA方法的函数调用图的构建。
其他文献
现代社会对于人类自身身份识别的准确性、安全性与实用性提出了更高要求,传统身份识别方法正越来越受到局限。随着生物识别悄然兴起,它逐渐成为了一种新的身份识别技术。其中步
目前,国内的E-Business,E-Government系统正大量涌现,但是由于各地的信息系统往往是各自开发的,它们的系统以及数据库是分布的、异质和异构的,不能互相访问,因此迫切地需要一个跨越
本文将科学计算可视化技术应用于含断层地层的三维可视化工作,是三维地学模拟一个重要研究方向。为了使煤矿开采创造更大的经济效益,就必须实现采煤的科技化、信息化,而将煤
网上阅卷系统利用计算机和网络支持阅卷教师完成阅卷工作,解决了传统人工阅卷模式下效率低、容易出错、难以控制阅卷质量等弊端,保证了考试阅卷工作的高效、准确、公平和公正
移动自组网是一种有特殊用途的对等式网络,具有无中心、白组。织、可快速展开及可移动等特点。组播在移动自组网中扮演着重要的角色,目前已成为研究热点之一,本文主要分析和研究
随着传感器技术和无线网络技术的发展,无线自组网也逐步进入了实际应用领域。无线自组网中的传感器节点可以以自组织的方式进行通信,不需要人工操作也能很好的完成预先设定的
随着通信技术的飞速发展,信息的海量存储与实时处理,对设备的性能要求越来越高了。但是,无论多大的磁盘空间,从最初的几K,到几十G,几百T,始终还是不能满足所有的需求。然而,互联网的
IP组播是一种受到广泛重视的网络技术,在一对多和多对多的网络通信中,组播技术可以使只在需要的时候才复制数据包,因此可以有效节省网络带宽。但是目前IP组播技术并没有在Int
由于神经网络具有强大的自学习、自适应、自组织能力,有较好的容错和并行处理能力,对非线性函数有较强的逼近能力,而得到了越来越广泛的研究和应用的推广。组合优化问题的求解是
分类挖掘是数据挖掘的重要技术之一。传统的分类算法主要是基于统计的分类算法,这些算法虽然比较成熟,并成功应用于许多领域,但其自身仍存在着诸多不足,尤其是当分类数据的特征存