一种文件处理方法及装置制造方法及图纸

技术编号:10646235 阅读:89 留言:0更新日期:2014-11-12 19:57
本发明专利技术公开了一种文件处理方法及装置,其中的方法可包括:扫描源文件,确定符合预设的文件过滤条件的目标文件块;生成用于表示所述目标文件块的第一抽象语法树,并根据所述第一抽象语法树确定对所述目标文件块的插桩位置;在所述确定的插桩位置对所述目标文件块进行插桩处理,生成用于表示插桩后的所述目标文件块的第二抽象语法树;调用文件回写接口将所述第二抽象语法树回写至所述源文件中。本发明专利技术可提升文件处理效率,提升文件操作的灵活性。

【技术实现步骤摘要】

本专利技术涉及一种计算机领域,具体涉及文件处理
,尤其涉及一种文件处理方法及装置
技术介绍
在软件程序开发过程中,经常会有性能优化、内存泄漏检测等需求,这时需要对程序源文件中的函数或代码段进行精确的分析,监控程序的源文件中函数或代码段的运行耗时、内存消耗、CPU(Central Processing Unit,中央处理器)占用等指标,用于指导性能优化的方向或定位程序的漏洞bug。目前,对程序源文件的测试分析主要是通过对源文件进行插桩处理实现,插桩是指在保证程序原有逻辑完整性的基础上插入一些探针(桩代码),在被执行时输出程序运行的特征数据,通过这些特征数据来获得程序运行的相关信息,实现测试分析的目的。现有的文件插桩处理发生在程序编译阶段,即基于编译环境在程序源文件的相应位置插入桩代码,获得编译后的可执行程序;上述插桩处理过程需要对整个源文件进行分析,对于大型的程序来说,将会造成相当大的工作量,效率较低;另外,插入桩代码后的源文件直接被编译获得可执行程序,从而无法实现对插桩后的源文件进行操作,降低了文件操作的灵活性。
技术实现思路
本专利技术提供一种文件处理方法及装置,可提升文件处理效率,提升文件操作的灵活性。本专利技术第一方面提供了一种文件处理方法,可包括:扫描源文件,确定符合预设的文件过滤条件的目标文件块;生成用于表示所述目标文件块的第一抽象语法树,并根据所述第一抽象语法树确定对所述目标文件块的插桩位置;在所述确定的插桩位置对所述目标文件块进行插桩处理,生成用于表示插桩后的所述目标文件块的第二抽象语法树;调用文件回写接口将所述第二抽象语法树回写至所述源文件中。本专利技术第二方面提供了一种文件处理装置,可包括:过滤模块,用于扫描源文件,确定符合预设的文件过滤条件的目标文件块;确定模块,用于生成用于表示所述目标文件块的第一抽象语法树,并根据所述第一抽象语法树确定对所述目标文件块的插桩位置;插桩处理模块,用于在所述确定的插桩位置对所述目标文件块进行插桩处理,生成用于表示插桩后的所述目标文件块的第二抽象语法树;回写模块,用于调用文件回写接口将所述第二抽象语法树所表示的文件块回写至所述源文件中。实施本专利技术实施例,具有如下有益效果:本专利技术实施例扫描源文件确定符合预设的文件过滤条件的目标文件块进行文件处理,可以去掉源文件中不需要插桩处理的文件块,减少了文件处理所耗费的资源,提升了文件处理效率;另外,本专利技术实施例基于目标文件块的抽象语法树进行插桩处理,并将插桩后的抽象语法树回写至源文件中,从而使得完成插桩处理后的源文件依然以代码文件形式存在,方便用户对插桩处理后的源文件的操作,提升了文件操作灵活性。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的一种文件处理方法的流程图;图2为本专利技术实施例提供的另一种文件处理方法的流程图;图3为本专利技术实施例提供的又一种文件处理方法的流程图;图4为本专利技术实施例提供的一种文件处理装置的结构示意图;图5是本专利技术实施例提供的另一种文件处理装置的结构示意图;图6为本专利技术实施例提供的确定模块的结构示意图;图7为本专利技术实施例提供的插桩处理模块的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。下面将结合附图1-附图3,对本专利技术实施例提供的文件处理方法进行详细介绍。请参见图1,为本专利技术实施例提供的一种文件处理方法的流程图;该方法可包括以下步骤S101-步骤S104。S101,扫描源文件,确定符合预设的文件过滤条件的目标文件块。其中,源文件可以指程序的源代码文件。文件过滤条件可以由用户预先设置,该文件过滤条件可以为:在循环分支文件、条件分支文件、输入/输出分支文件的任一种或多种类型的分支文件中插入桩代码。本步骤中,依据预设的文件过滤条件,可对源文件中包含的各文件块进行过滤,得到满足文件过滤条件的至少一个目标文件块,例如:得到循环分支文件、条件分支文件、输入/输出分支文件等分支文件。需要说明的是,通过筛选符合预设的文件过滤条件的目标文件块进行后续处理,而对于不符合预设的文件过滤条件文件块则无需进行处理,从而可避免对整个源文件进行处理所带来的资源耗费,且能有效地提升文件处理效率。S102,生成用于表示所述目标文件块的第一抽象语法树,并根据所述第一抽象语法树确定对所述目标文件块的插桩位置。其中,抽象语法树(Abstract Syntax Tree,AST)是编程语言的源代码的抽象语法结构的树状表现形式,AST上的每个节点表示该源代码中的一种结构。本步骤中,第一AST为目标文件块的抽象结构的树状表现形式,通过扫描第一AST,则可确定对所述目标文件块的插桩位置。S103,在所述确定的插桩位置对所述目标文件块进行插桩处理,生成用于表示插桩后的所述目标文件块的第二抽象语法树。插桩处理的目的是在所述目标文件块的插桩位置植入桩代码,以实现对目标文件块的监控分析,其中,该桩代码可以由用户预先配置。本步骤中,在第一AST中所确定的插桩位置进行插桩处理后,则形成包含已插入的预先配置的桩代码的新的AST,该新的AST则为所述第二AST,用于表示插桩后的所述目标文件块的抽象结构。S104,调用文件回写接口将所述第二抽象语法树回写至所述源文件中。其中,完成回写的所述源文件即为完成插桩处理的源文件。通过本步骤的回写操作,使得完成插桩处理后的源文件依然以代码文件形式存在,用户如果存在修改需要,则可对完成插桩处理后的所述源文件进行修改,从而提升了操作灵活性。请参见图2,为本专利技术实施例提供的另一种文件处理方法的流程图;该方法可包括以下步骤S201-步骤S210。S201,接收用户设置的文件过滤条件,并接收用户预先配置的桩代码。其中,所述文件过滤条件可以为:在循环分支文件、条件分支文件、输入/输出分支文件的任一种或多种类本文档来自技高网...

【技术保护点】
一种文件处理方法,其特征在于,包括:扫描源文件,确定符合预设的文件过滤条件的目标文件块;生成用于表示所述目标文件块的第一抽象语法树,并根据所述第一抽象语法树确定对所述目标文件块的插桩位置;在所述确定的插桩位置对所述目标文件块进行插桩处理,生成用于表示插桩后的所述目标文件块的第二抽象语法树;调用文件回写接口将所述第二抽象语法树回写至所述源文件中。

【技术特征摘要】
1.一种文件处理方法,其特征在于,包括:
扫描源文件,确定符合预设的文件过滤条件的目标文件块;
生成用于表示所述目标文件块的第一抽象语法树,并根据所述第一抽象语
法树确定对所述目标文件块的插桩位置;
在所述确定的插桩位置对所述目标文件块进行插桩处理,生成用于表示插
桩后的所述目标文件块的第二抽象语法树;
调用文件回写接口将所述第二抽象语法树回写至所述源文件中。
2.如权利要求1所述的方法,其特征在于,所述生成用于表示所述目标文
件块的第一抽象语法树,并根据所述第一抽象语法树确定所述目标文件块的插
桩位置,包括:
对所述目标文件块进行语法解析,生成所述目标文件块的第一抽象语法树;
扫描所述第一抽象语法树,确定所述目标文件块的函数入口位置和函数出
口位置;
将所述第一抽象语法树中所确定的所述目标文件块的函数入口位置和/或函
数出口位置记录为对所述目标文件块的插桩位置。
3.如权利要求2所述的方法,其特征在于,所述在所述确定的插桩位置对
所述目标文件块进行插桩处理,生成用于表示插桩后的目标文件的第二抽象语
法树,包括:
获取预先配置的桩代码;
将所述预先配置的桩代码插入至所述第一抽象语法树中所确定的所述目标
文件块的函数入口位置和/或函数出口位置;
将插入所述预先配置的桩代码后的第一抽象语法树确定为所述第二抽象语
法树。
4.如权利要求1-3任一项所述的方法,其特征在于,所述扫描源文件,确
定符合预设的文件过滤条件的目标文件块之前,还包括:
接收用户设置的文件过滤条件,并接收用户预先配置的桩代码;
其中,所述文件过滤条件包括:在循环分支文件、条件分支文件、输入/输
出分支文件的任一种或多种类型的分支文件中插入桩代码。
5.如权利要求4所述的方法,其特征在于,所述调用文件回写接口将所述
第二抽象语法树回写至所述源文件中之后,还包括:
调用编译接口将完成回写的所述源文件生成可执行文件。
6.如权利要求5所述的方法,其特征在于,所述调用文件回写接口将所述
第二抽象语法树回写至所述源文件中之后,所述调用编译接口将完成回写的所
述...

【专利技术属性】
技术研发人员:吴云佳
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1