[发明专利]无痕可管理的源代码手动定义标志插桩方法无效
| 申请号: | 201110198546.9 | 申请日: | 2011-07-15 |
| 公开(公告)号: | CN102214142A | 公开(公告)日: | 2011-10-12 |
| 发明(设计)人: | 张天;陈华杰 | 申请(专利权)人: | 南京大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 南京天翼专利代理有限责任公司 32112 | 代理人: | 朱戈胜 |
| 地址: | 210093 江*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 无痕可 管理 源代码 手动 定义 标志 方法 | ||
技术领域
本发明涉及计算机程序动态分析,主要涉及一种无痕可管理的源代码手动定义标志插桩方法。
背景技术
程序分析通常利用静态程序分析和动态程序分析对程序行为进行自动分析,进而提高软件质量。动态程序分析常借助于插桩方法来收集程序动态运行行为,某些与运行环境相关的程序行为只能通过插桩来收集,而静态程序分析无法进行分析。软件开发过程中,代码审查者在代码编写阶段完成后使用源代码插桩方法对代码进行审查,通常审查者拥有阅读源代码权限但不便对代码进行修改。通过对程序运行行为的分析尽早发现代码中的错误,进而提高软件质量。源代码插桩能够充分地利用程序语义、可视化地显示插桩代码、并且不会提高代码逻辑复杂性。
程序插桩技术,是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针,通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。由于程序插桩技术是在被测程序中插入探针,然后通过探针的执行来获得程序的控制流和数据流信息,以此来实现测试的目的。因此,根据探针插入的时间可以分为目标代码插桩和源代码插桩。
现有插桩方法主要包括断言机制、字节码插桩、面向方面插桩等三类方法。断言机制直接在写源文件中添加插桩代码,将会降低代码阅读性。字节码插桩则直接对字节码文件进行修改,被插字节码的源代码无法可视化,且无法保证代码插入过程的正确性。面向方面插桩在程序纵向继承关系的基础上增加了横向方面关系,增加了程序的逻辑复杂性。
目前插桩技术主要存在插桩点及其代码可视化、被插代码管理、插桩点自动定位、自动插桩性能较低的问题。
发明内容
鉴于上述问题,本发明旨在提供一个源代码插桩方法,该方法不仅支持手动插桩,并且支持批量自动插桩。其主要特点有插桩代码可视化、插入代码集中管理和插桩过程无痕化等。
本发明是通过以下技术方案实现的:
一种对源代码进行无痕可管理的无痕可管理的源代码手动定义标志插桩方法,步骤包括:
步骤10:打开一个工程;
步骤11:通过在源代码编辑器上定义插桩标志,进而在整个工程中定义插桩点;
步骤12:审查所有插桩点的定义:若发现带有错误的插桩点,则进入步骤13对其进行修改;没有发现带有错误的插桩点,则直接进入步骤14;
步骤13:修改插桩的定义直至正确;
步骤14:将插桩点与原源文件合并生成新源文件;
步骤15:对新源文件进行编译生成字节码文件。
所述步骤11)中,插桩点定义的步骤包括:
步骤20:打开一个工程;
步骤21:判断是否需要在工程中的源文件上定义插桩点,如果是,则跳转到步骤22,如果不是,则跳转到步骤25;
步骤22:选取所需插桩的源文件,用源代码编辑器打开该源文件;
步骤23:先定位到插桩点所在代码行,并定义一个标志便于能够及时识别,再在该标志上定义相应的插桩代码;
步骤24:如果需要在本源文件中继续定义新的插桩点,则跳转到步骤21,如果不需要,则进入步骤25;
步骤25:结束本次插桩定义。
所述步骤13中,可修改信息包括:插桩点所包含的插桩代码和插桩点是否需要编译到字节码文件。
所述步骤14中,手动插桩中原源文件与插桩点合并生成新源文件的步骤包括:
步骤30:原源文件与插桩点合并的开始,此时各个源文件中的插桩点已经定义好;
步骤31:先将工程中所有源文件查找出来,并从中选择一个源文件;
步骤32:查看所选源文件中是否包含插桩点,若有则进入步骤33,若没有则跳转到步骤36;
步骤33:首先将原源文件备份,然后查找出源文件中所有插桩点;
步骤34:对查找出来的所有插桩点进行排序,按照行号进行排序;
步骤35:逐行读取原源文件并写入一个新源文件,生成一个新源文件;
步骤36:查看是否还有源文件需要合并插桩点,如果有,则返回步骤31,如果没有,则进入步骤37;
步骤37:所有源文件都已经合并过插桩点,结束。
所述步骤34中,排序是按照行号由小到大进行排序;对于行号的相同的插桩点,行首类型插桩点排在行末类型插桩点之前。
所述步骤35中,逐行读取原源文件,从前往后遍历所有插桩点;在逐行读取源文件时:
a)如果行号与插桩点行号不同,则直接写入新源文件中;
b)如果行号与插桩点行号相同,此时:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110198546.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:带计量器的螺旋弹簧成型机送料机构
- 下一篇:可调式展布杆机构





