本申请公开基于程序分析结果的字节码插桩方法,包括:基于程序的源代码划分的至少一个基本块的基本块信息,获取目标插桩点信息;基于所述目标插桩点信息,设置对应的目标插桩点;所述目标插桩点用于获取所述目标插桩点对应的基本块的运行信息;本申请还公开了基于程序分析结果的字节码插桩装置及存储介质;通过本申请实施例,可以实现字节码插桩,进而获取程序源代码的运行信息。
【技术实现步骤摘要】
基于程序分析结果的字节码插桩方法、装置及存储介质
本申请涉及计算机
,尤其涉及基于程序分析结果的字节码插桩方法、装置及存储介质。
技术介绍
插桩技术是白盒测试工具必须使用到的技术,相关技术中,常使用字节码插桩技术或二进制代码插桩技术,由于上述两种插桩技术均需要分析字节码,但字节码的分析导致源代码信息缺失,进而无法获得程序的控制流信息;因此如何在源代码中进行插桩以获取程序源代码的运行信息是需要解决的技术问题。
技术实现思路
本申请实施例提供一种基于程序分析结果的字节码插桩方法、装置及存储介质,可以通过在源代码中设置插桩点,实现源代码运行信息的获取。本申请实施例的技术方案是这样实现的:一方面,本申请实施例提供基于程序分析结果的字节码插桩方法,包括:基于程序的源代码划分的至少一个基本块的基本块信息,获取目标插桩点信息;基于所述目标插桩点信息,设置对应的目标插桩点;所述目标插桩点用于获取所述目标插桩点对应的基本块的运行信息。上述方案中,所述基于程序的源代码划分的至少一个基本块的基本块信息,获取目标插桩点信息,包括:基于所述程序的源代码划分的至少一个基本块的基本块信息,确定候选插桩点信息。上述方案中,所述基于所述程序的源代码划分的至少一个基本块的基本块信息,获取目标插桩点信息包括:在所述候选插桩点信息对应的基本块包括逻辑块的情况下,删除所述逻辑块对应的候选插桩点信息;确定所述候选插桩点信息中除已删除的候选插桩点信息之外的候选插桩点信息为目标插桩点信息。上述方案中,所述基于所述目标插桩点信息,设置对应的目标插桩点,包括:基于所述目标插桩点信息确定目标插桩点的代码;基于所述目标插桩点的代码设置对应的目标插桩点。上述方案中,所述基于所述目标插桩点信息确定目标插桩点的代码,包括:判断所述目标插桩点信息对应的基本块是否为起始块;在所述目标插桩点信息对应的基本块是起始块的情况下,确定所述目标插桩点的代码包括第一字符串;或者,在所述目标插桩点信息对应的基本块不是起始块的情况下,确定所述目标插桩点的代码包括第二字符串。上述方案中,所述候选插桩点信息包括:所述候选插桩点对应的基本块信息和所述候选插桩点的位置信息。上述方案中,所述候选插桩点的位置信息包括:所述候选插桩点对应的基本块的代码的行号之前。上述方案中,其特征在于,所述基本块信息包括以下至少一种:所述基本块所属的文件的身份标识号(Identitydocument,ID)、所述基本块的标识信息、所述基本块的行号和所述基本块的块类型标识。另一方面,本申请实施例还提供基于程序分析结果的字节码插桩装置,所述装置包括:获取单元,用于基于程序的源代码划分的至少一个基本块的基本块信息,获取目标插桩点信息;设置单元,用于基于所述目标插桩点信息,设置对应的目标插桩点;所述目标插桩点用于获取所述目标插桩点对应的基本块的运行信息。上述方案中,所述装置还包括:确定单元,用于基于所述程序的源代码划分的至少一个基本块的基本块信息,确定候选插桩点信息。上述方案中,所述装置还包括:过滤单元,用于在所述候选插桩点信息对应的基本块包括逻辑块的情况下,删除所述逻辑块对应的候选插桩点信息;所述确定单元,还用于确定所述候选插桩点信息中除已删除的候选插桩点信息之外的候选插桩点信息为目标插桩点信息。上述方案中,所述确定单元,还用于基于所述目标插桩点信息确定目标插桩点的代码;设置单元,用于基于所述目标插桩点的代码设置对应的目标插桩点。上述方案中,所述装置还包括:判断单元,用于判断所述目标插桩点信息对应的基本块是否为起始块;所述确定单元,用于在所述目标插桩点信息对应的基本块是起始块的情况下,确定所述目标插桩点的代码包括第一字符串;或者,在所述目标插桩点信息对应的基本块不是起始块的情况下,确定所述目标插桩点的代码包括第二字符串。上述方案中,所述候选插桩点信息包括:所述候选插桩点对应的基本块信息和所述候选插桩点的位置信息。上述方案中,所述候选插桩点的位置信息包括:所述候选插桩点对应的基本块的代码的行号之前。上述方案中,所述基本块信息包括以下至少一种:所述基本块所属的文件的身份标识号ID、所述基本块的标识信息、所述基本块的行号和所述基本块的块类型标识。本申请实施例提供的基于程序分析结果的字节码插桩方法、装置及存储介质,通过基于程序的源代码划分的至少一个基本块的基本块信息,获取目标插桩点信息;基于所述目标插桩点信息,设置对应的目标插桩点;可以实现在设置插桩点之前,根据程序的源代码确定目标插桩点的位置;在程序启动过程中针对字节码进行动态插桩,基于插桩点获取程序源代码的运行信息,可以使测试的覆盖信息覆盖到基本块层级,提升测试的可靠性和可见性。附图说明图1为本申请实施例提供的基于程序分析结果的字节码插桩方法的可选流程示意图一;图2为本申请实施例提供的基于程序分析结果的字节码插桩方法的可选流程示意图二;图3为本申请实施例提供的静态分块表文件的可选数据结构示意图;图4为本申请实施例提供的基于程序分析结果的字节码插桩方法的可选流程示意图三;图5为本申请实施例提供的源代码静态分析的示意图;图6为本申请实施例提供的基本块分类的示意图;图7为本申请实施例提供的源代码对应的控制流程图;图8为本申请实施例提供的获取控制流程图中的覆盖率信息的示意图;图9为本申请实施例提供的基于程序分析结果的字节码插桩装置的可选结构示意图。具体实施方式以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。相关技术中,白盒测试工具必须使用到的技术是插桩技术。目前常用的字节码或者二进制代码插桩技术由于对字节码进行分析,导致源代码信息缺失,不能获取到源代码信息,也就不能获得程序的控制流信息,可视化能力弱;此外,在应用的过程中,一旦出现程序运行问题,也很难进行排查和调整,导致程序源代码的可靠性差。而源代码插桩技术(SourceCodeAnalyzerSourceCodeInstrumentation,SASI),虽然可以提供最稳定,信息最全的测试能力,但其对源代码插桩以后,还需要重新打包编译,不仅流程相对较长,而且打包过程同时需要和持续集成(ContinuousIntegration,CI)以及开发人员对接,会增加从测试入口推进产品的难度。另外从发布角度,会产生两个发布包,一个是插桩代码的发布包,一个是原始代码编译的发布包。那么按照流程测试运行的是插桩代码,而发布是原始代码,在流程要求上也会存在一定的问题,有可能增加测试版和发布版对应不上的风险。基于目前源代码运行监控方法中存在的问题,本申请提出基于程序分析结果本文档来自技高网...
【技术保护点】
1.基于程序分析结果的字节码插桩方法,其特征在于,所述方法包括:/n基于程序的源代码划分的至少一个基本块的基本块信息,获取目标插桩点信息;/n基于所述目标插桩点信息,设置对应的目标插桩点;/n所述目标插桩点用于获取所述目标插桩点对应的基本块的运行信息。/n
【技术特征摘要】
1.基于程序分析结果的字节码插桩方法,其特征在于,所述方法包括:
基于程序的源代码划分的至少一个基本块的基本块信息,获取目标插桩点信息;
基于所述目标插桩点信息,设置对应的目标插桩点;
所述目标插桩点用于获取所述目标插桩点对应的基本块的运行信息。
2.根据权利要求1所述的方法,其特征在于,所述基于程序的源代码划分的至少一个基本块的基本块信息,获取目标插桩点信息,包括:
基于所述程序的源代码划分的至少一个基本块的基本块信息,确定候选插桩点信息。
3.根据权利要求2所述的方法,其特征在于,所述基于所述程序的源代码划分的至少一个基本块的基本块信息,获取目标插桩点信息包括:
在所述候选插桩点信息对应的基本块包括逻辑块的情况下,删除所述逻辑块对应的候选插桩点信息;
确定所述候选插桩点信息中除已删除的候选插桩点信息之外的候选插桩点信息为目标插桩点信息。
4.根据权利要求1所述的方法,其特征在于,所述基于所述目标插桩点信息,设置对应的目标插桩点,包括:
基于所述目标插桩点信息确定目标插桩点的代码;
基于所述目标插桩点的代码设置对应的目标插桩点。
5.根据权利要求4所述的方法,其特征在于,所述基于所述目标插桩点信息确定目标插桩点的代码,包括:
判断所述目标插桩点信息对应的基本块是否为起始块;
在所述目标插桩点信息对应的基本块是起始块的情况下,确定所述目标插桩点的代码包括第一字符串;
或者,在所述目标插桩点信息对应的基本块不是起始块的情况下,确定所述目标插桩点的代码包括第二字符串。
6.根据权利要求1所述的方法,其特征在于,所述候选插桩点信息包括:
所述候选插桩点对应的基本块信息和所述候选插桩点的位置信息。
7.根据权利要求6所述的方法,其特征在于,所述候选插桩点的位置信息包括:
所述候选插桩点对应的基本块的代码的行号之前。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述基本块信息包括以下至少一种:
所述基本块所属的文件的身份标识号ID、所述基本块的标识信息、所述基本块的行号和所述基本块的块类型标识。
9.基于程序分析结果的字节码插桩装置,其特征在于,所述装置包括:
获取单元,用于基于程序的源代码划分的至少一个基本块的基本块信息,获取目标插桩点信息;
【专利技术属性】
技术研发人员:赵明,冯文亮,陈俊,程烨,曹栋,
申请(专利权)人:苏州洞察云信息技术有限公司,上海浦东发展银行股份有限公司,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。