一种Java程序插桩语言及支撑工具

来源 :南京大学 | 被引量 : 0次 | 上传用户:shabi12345678
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
插桩技术在程序分析、测试等领域都占有非常重要的地位。但是现有的插桩实现技术需要用户根据不同的被分析、测试程序构造不同的插桩模块,这种实现方式往往导致了插桩过程工作繁琐,并且已有的插桩模块难以复用。本文将整个插桩过程分为两个步骤来进行:第一,利用代码查询技术在程序的源代码中定位需要被插桩的位置;第二,根据插桩点的上下文信息为每一个不同的插桩点构造相应的植入代码。根据这种思想,我们提出了一个基于代码查询的插桩方法JIns,并实现了相应的支撑工具。JIns方法拥有一套语法规则来描述插桩点在程序中的位置,同时提供了带有参数的插桩语句模板机制实现上下文敏感的插桩工作。本文针对于现有插桩工作的不足,解决了下面的问题:·如何提供一种通用的方式来定位插桩点。JIns方法基于代码查询的方法,提出了基于一阶谓词逻辑的查询语言,它支持对类(接口)、方法、语句和变量四类程序元素的描述。语言形式上与SQL类似,方便用户使用。·如何根据插桩点在程序中位置的不同而构造不同的插桩语句。JIns方法提供了带有参数的插桩模板,其中的参数将会被查询过程中得到的信息所替换,从而构造出上下文敏感的插桩代码。·如何评估插桩代码对程序运行时间的影响。本文提供了一套用于计算插桩语句运行时间的机制,通过该机制,用户可以方便地看出插桩代码运行时间在整个程序运行时间中所占的比例。
其他文献
网络技术迅速发展极大提高了信息网络化的应用效率,但是由于重要信息在网络中的存在与传播,使得网络安全问题也更加突出,加深了信息共享和安全隔离之间的矛盾。据统计分析,内