[发明专利]代码异常检测方法、装置、计算机设备及存储介质有效
申请号: | 202010628920.3 | 申请日: | 2020-06-30 |
公开(公告)号: | CN111752600B | 公开(公告)日: | 2023-02-03 |
发明(设计)人: | 杨哲 | 申请(专利权)人: | 深圳壹账通智能科技有限公司 |
主分类号: | G06F8/72 | 分类号: | G06F8/72;G06F8/53;G06F8/41;G06F9/455 |
代理公司: | 北京英特普罗知识产权代理有限公司 11015 | 代理人: | 程超 |
地址: | 518052 广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 异常 检测 方法 装置 计算机 设备 存储 介质 | ||
本发明公开了代码异常检测方法、装置、计算机设备及存储介质,属于测试领域。本发明可应用于系统测试过程中。本发明的代码异常检测方法、装置、计算机设备及存储介质,通过预先加载待执行文件,逐个对待执行文件中的第一代码块添加异常编译代码,生成可对自身的代码块进行异常捕获功能的第二代码块;根据第二代码块生成与待执行文件对应的目标执行文件;在执行目标执行文件时,若目标执行文件中的第二代码块异常,可通过异常编译代码将相应的第二代码块转换为源码,从而达到快速获取异常代码块对应的源码目的,耗时短、效率高。
技术领域
本发明涉及测试领域,尤其涉及代码异常检测方法、装置、计算机设备及存储介质。
背景技术
随着微服务架构的盛行,一个系统往往被拆分成多个子系统来完成一个业务功能。由此产生的问题是:线上异常定位难且定位时间长。目前对于线上异常定位主要采用两种方法:一种是基于日志级别进行大数据分析;另一种是线下本地拉取代码进行分析。对于第一种方法而言,考虑到一条调用链上可存在多个子系统以及数十个接口,每个子系统都会在各自的接口级别打印日志,一旦某一个环境报错,将会级联引发其相关子系统打印错误日志,进而将真正发生异常的日志淹没,存在异常定位难且定位时间长的缺陷。对于第二种方法而言,由于java语言的特性,线上运行的代码都是二进制的字节码,即使通过监控定位到异常代码,也无法查看线上源码进行快速异常锁定,仍然需要取线下本地拉取代码进行分析,存在耗时长、效率低的缺陷。
发明内容
针对现有系统的代码线上异常定位难且定位时间长的问题,现提供一种旨在可线上动态捕获异常代码的代码异常检测方法、装置、计算机设备及存储介质,本发明还可应用于智慧城市领域中,从而推动智慧城市的建设。
为实现上述目的,本发明提供一种代码异常检测方法,应用于虚拟机中,包括:
加载待执行文件,所述待执行文件包括至少一个第一代码块;
分别对所述待执行文件中各个所述第一代码块添加异常编译代码,获取与所述第一代码块对应的第二代码块;
根据获取的所述第二代码块生成与所述待执行文件对应的目标执行文件;
执行所述目标执行文件,当所述目标执行文件中的所述第二代码块异常时,通过所述异常编译代码将相应的所述第二代码块转换为源码。
优选的,所述异常编译代码为反编译逻辑代码,或
所述异常编译代码包括异常捕获代码和反编译逻辑代码。
优选的,所述分别对所述待执行文件中各个所述第一代码块添加异常编译代码,获取与所述第一代码块对应的第二代码块,包括:
检测所述待执行文件中的各个所述第一代码块是否符合预设条件;
当所述第一代码块符合所述预设条件时,在所述第一代码块中添加反编译逻辑代码,生成与所述第一代码块对应的所述第二代码块;
当所述第一代码块不符合所述预设条件时,在所述第一代码块中添加异常捕获代码和反编译逻辑代码,生成与所述第一代码块对应的所述第二代码块。
优选的,所述预设条件为所述第一代码块包括所述异常捕获代码,异常捕获代码为exception字节码;
所述当所述第一代码块符合所述预设条件时,在所述第一代码块中添加反编译逻辑代码,生成与所述第一代码块对应的所述第二代码块包括:
当所述第一代码块包括exception字节码时,在所述第一代码块的结尾处添加所述反编译逻辑代码,以生成所述第二代码块。
优选的,所述根据获取的所述第二代码块生成与所述待执行文件对应的目标执行文件,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳壹账通智能科技有限公司,未经深圳壹账通智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010628920.3/2.html,转载请声明来源钻瓜专利网。