CN118113589A - 内存检测方法、装置、电子设备及可读存储介质 - Google Patents

内存检测方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN118113589A
CN118113589A CN202211529701.5A CN202211529701A CN118113589A CN 118113589 A CN118113589 A CN 118113589A CN 202211529701 A CN202211529701 A CN 202211529701A CN 118113589 A CN118113589 A CN 118113589A
Authority
CN
China
Prior art keywords
detection result
information
detection
memory
false positive
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211529701.5A
Other languages
English (en)
Inventor
廖艳云
刘金玉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202211529701.5A priority Critical patent/CN118113589A/zh
Publication of CN118113589A publication Critical patent/CN118113589A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提供了一种内存检测方法、装置、电子设备及可读存储介质,涉及云技术等领域,应用场景包括但不限于内存检测等场景。该方法包括:基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果;误报规则数据库是基于如下方式生成的:基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,接收针对第一检测结果的第一误报信息;获取除第一误报信息对应的第一检测结果之外的检测结果,作为第二检测结果;基于第一误报信息,对第二检测结果进行筛选,获取针对第二检测结果的第二误报信息。本申请实施例可以有效地降低误报率,进而提高内存检测结果的可信度。

Description

内存检测方法、装置、电子设备及可读存储介质
技术领域
本申请涉及内存检测技术领域,具体而言,本申请涉及一种内存检测方法、装置、电子设备及可读存储介质。
背景技术
目前,有一些对开源软件进行内存调试、内存泄漏检测以及性能分析的开源软件开发工具,例如:valgrind内存检测工具。
但是,由于开源软件开发工具是针对每个代码的检测,所以当每一条代码出现错误时都会相应的报错,而有一些错误是我们不关心的,与开源软件的内存检测关系不大,但是每次执行都会报出来,使得内存检测结果经常出现误报,导致内存检测结果的误报率较高。
因此,急需一种能够有效降低内存检测结果的误报率的方法。
发明内容
本申请实施例提供了一种内存检测方法、装置、电子设备及可读存储介质,用于解决现有技术中存在的内存检测结果的误报率较高的技术问题。
第一方面,本申请实施例提供一种内存检测方法,包括:
基于内存检测工具对目标业务模块进行内存检测,得到初始检测结果;
基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果;
其中,误报规则数据库是基于如下方式生成的:
基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,接收针对第一检测结果的第一误报信息;
从第一检测结果中,获取除第一误报信息对应的第一检测结果之外的检测结果,作为第二检测结果;
基于第一误报信息,对第二检测结果进行筛选,获取针对第二检测结果的第二误报信息;
将第一误报信息和第二误报信息增加至误报规则数据库的误报信息中。
在一个可能的实现方式中,基于第一误报信息,对第二检测结果进行筛选,获取针对第二检测结果的第二误报信息,包括:
将第一误报信息和第二检测结果进行匹配,确定第一误报信息和第二检测结果的相似度;
若相似度大于预设相似度阈值,则将第二检测结果作为第二误报信息。
在一个可能的实现方式中,基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果之后,还包括:
接收针对内存检测结果的第三误报信息;
将第三误报信息增加至误报规则数据库的误报信息中。
在一个可能的实现方式中,基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果之后,还包括:
接收针对多个目标业务模块的内存检测结果的第四误报信息;
从多个目标业务模块的内存检测结果中,获取除第四误报信息对应的内存检测结果之外的检测结果,作为第三检测结果;
基于第四误报信息,对第三检测结果进行筛选,获取针对第三检测结果的第五误报信息;
将第四误报信息和第五误报信息增加至误报规则数据库的误报信息中。
在一个可能的实现方式中,将第一误报信息和第二检测结果进行匹配,确定第一误报信息和第二检测结果的相似度,包括:
获取第一误报信息的堆栈信息和第二检测结果的堆栈信息;
确定第一误报信息的堆栈信息和第二检测结果的堆栈信息的相似度,作为第一误报信息和第二检测结果的相似度。
在一个可能的实现方式中,基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,包括:
针对每一第一样本业务模块,基于内存检测工具启动第一样本业务模块,并执行第一样本业务模块的代码;
在对第一样本业务模块的代码的执行满足预设条件时,停止对第一样本业务模块的代码的执行;预设条件,包括:第一样本业务模块的代码的执行结束或内存检测工具接收到停止执行指令;
生成与第一样本业务模块对应的第一检测结果。
在一个可能的实现方式中,基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,包括:
基于内存检测工具对多个第一样本业务模块进行内存检测,生成指定格式的检测报告;
对指定格式的检测报告进行解析,获取第一检测结果;第一检测结果包括:堆栈信息、过滤规则信息、解析模块名称、异常类型信息和异常描述信息中的至少一种。
在一个可能的实现方式中,基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果,包括:
获取误报信息的过滤规则信息;
若初始检测结果中存在与过滤规则信息相匹配的检测结果,则将相匹配的检测结果从初始检测结果中删除,将初始检测结果的其余检测结果作为内存检测结果。
第二方面,本申请实施例提供一种内存检测装置,包括:
检测模块,用于基于内存检测工具对目标业务模块进行内存检测,得到初始检测结果;
校正模块,用于基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果;
其中,误报规则数据库是基于如下方式生成的:
基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,接收针对第一检测结果的第一误报信息;
从第一检测结果中,获取除第一误报信息对应的第一检测结果之外的检测结果,作为第二检测结果;
基于第一误报信息,对第二检测结果进行筛选,获取针对第二检测结果的第二误报信息;
将第一误报信息和第二误报信息增加至误报规则数据库的误报信息中。
第三方面,本申请实施例提供一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,处理器执行计算机程序以实现第一方面的任一项方法的步骤。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现第一方面的任一项方法的步骤。
第五方面,本申请实施例一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现第一方面的任一项方法的步骤。
本申请实施例提供的技术方案带来的有益效果是:
本申请实施例的内存检测方法的误报规则数据库中的误报信息包括对大量的第一样本业务模块进行内存检测,得到第一检测结果后确定的误报信息,是对第一检测结果进行第一次筛选得到第一误报信息,再基于第一误报信息自动对除第一误报信息对应的第一检测结果之外的检测结果进行第二次筛选,获得第二误报信息,然后将第一误报信息和第二误报信息增加至误报规则数据库的误报信息中,这样可以得到比较全面的误报信息,进而采用误报信息对初始检测结果进行校正得到的内存检测结果,能够有效地降低误报率,提高内存检测结果的可信度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供一种内存检测方法的应用场景的架构示意图;
图2为本申请实施例提供的一种内存检测方法的流程示意图;
图3为本申请实施例提供的一种基于第一误报信息,对第二检测结果进行筛选,获取针对第二检测结果的第二误报信息的步骤的流程示意图;
图4为本申请实施例提供的一种基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果之后的步骤的流程示意图;
图5为本申请实施例提供的另一种内存检测方法的流程图;
图6为本申请实施例提供的一种基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果的步骤的流程图;
图7为本申请实施例提供的一种第一检测结果对应的信息的结构示意图;
图8为本申请实施例提供的一种内存检测装置的结构示意图;
图9为本申请实施例提供的另一种内存检测装置的结构示意图;
图10为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”指示实现为“A”,或者实现为“A”,或者实现为“A和B”。
本申请实施例的内存检测方法、装置、电子设备及可读存储介质涉及云技术(Cloud technology)等领域,本申请实施例所涉及的内存检测方法、装置、电子设备及可读存储介质可以基于云技术(Cloudtechnology)实现,例如:基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,接收针对第一检测结果的第一误报信息;从第一检测结果中,获取除第一误报信息对应的第一检测结果之外的检测结果,作为第二检测结果;基于第一误报信息,对第二检测结果进行筛选,获取针对第二检测结果的第二误报信息;将第一误报信息和第二误报信息增加至误报规则数据库的误报信息中等内容。示例性的,该内存检测方法、装置、电子设备及可读存储介质的应用场景包括但不限于内存检测。
云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络***的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台***进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的***后盾支撑,只能通过云计算来实现。
云技术涉及的类别较多,本申请实施例的基于内存检测方法、装置、电子设备及可读存储介质主要涉及如下一些类别:
大数据(Big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着云时代的来临,大数据也吸引了越来越多的关注,大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘、分布式文件***、分布式数据库、云计算平台、互联网和可扩展的存储***。
云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用***能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作***)、存储设备、网络设备。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储***(以下简称存储***)是指通过集群应用、网格技术以及分布存储文件***等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储***。
目前,存储***的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件***上,文件***将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件***将每个对象分别写入该逻辑卷的物理存储空间,且文件***会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件***能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储***为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
所谓人工智能云服务,一般也被称作是AIaaS(AI as a Service,中文为“AI即服务”)。这是目前主流的一种人工智能平台的服务方式,具体来说AIaaS平台会把几类常见的AI服务进行拆分,并在云端提供独立或者打包的服务。这种服务模式类似于开了一个AI主题商城:所有的开发者都可以通过API接口的方式来接入使用平台提供的一种或者是多种人工智能服务,部分资深的开发者还可以使用平台提供的AI框架和AI基础设施来部署和运维自已专属的云人工智能服务。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先对本申请涉及的几个名词进行介绍和解释:
valgrind:是一款用于内存调试、内存泄漏检测以及性能分析的开源软件开发工具。valgrind包括6个子工具:(1)Memcheck:这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,比如:使用未初始化的内存,使用已经释放了的内存,内存访问越界等。这也是本发明中内存检测使用的工具;(2)Callgrind:主要用来检查程序中函数调用过程中出现的问题;(3)Cachegrind:主要用来检查程序中缓存使用出现的问题;(4)Helgrind:主要用来检查多线程程序中出现的竞争问题;(5)Massif:主要用来检查程序中堆栈使用中出现的问题;(6)Extension:可以利用core提供的功能,自己编写特定的内存调试工具。
suppression:是valgrind工具的一个重要功能特性,可以通过这个特性来过滤屏蔽不必要的error报错。
***lib库:静态链接库,库中的代码最后需要连接到你的可执行文件中去,在静态库情况下,函数和数据被编译进一个二进制文件(通常扩展名为*.LIB),Visual C++的编译器在链接过程中将从静态库中恢复这些函数和数据并把他们和应用程序中的其他模块组合在一起生成可执行文件。
DevOps:流程包含计划(plan)、编码(code)、编译(build)、测试(test)、发布(release)、部署(deploy)、运营(operate)、检测(monitor),这是一个循环的过程。DevOps是依托容器、自动化、云计算等技术及精益化管理形成的一种项目过程,有效的促进了开发、测试、运营、运维、QA等团队间的协作,使得团队内、跨团队之间的协作得到极大的提升,可以帮助企业做到产品精益化、运营精益化、管理精益化。
kill-9:表示进程被终止,需要立即退出,kill-9命令用于退出一个进程。
下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
图1示出了本申请实施例所适用的一种内存检测方法的应用场景,可以理解的是,本申请实施例所提供的内存检测方法、装置、电子设备及可读存储介质可以适用于但不限于应用于如图1所示的应用场景中。
如图1所示,该示例中的内存检测***的架构可以包括但不限于终端101和服务器102,终端101和服务器102之间可以通过网络进行交互。
终端101用于响应于针对第一检测结果的选择操作,确定第一检测结果的第一误报信息,并发送至服务器102。终端101还可以用于基于内存检测工具对目标业务模块进行内存检测,得到初始检测结果;基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果。
服务器102用于基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,接收针对第一检测结果的第一误报信息;从第一检测结果中,获取除第一误报信息对应的第一检测结果之外的检测结果,作为第二检测结果;基于第一误报信息,对第二检测结果进行筛选,获取针对第二检测结果的第二误报信息;将第一误报信息和第二误报信息增加至误报规则数据库的误报信息中。服务器102也可以用于基于内存检测工具对目标业务模块进行内存检测,得到初始检测结果;基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果。
其中,终端101可以是智能手机(如Android手机、iOS手机等)、手机模拟器、平板电脑、笔记本电脑、数字广播接收器、MID(Mobile Internet Devices,移动互联网设备)、PDA(个人数字助理)等。服务器102可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器或服务器集群。
上述网络可以包括但不限于:有线网络,无线网络,其中,该有线网络包括:局域网、城域网和广域网,该无线网络包括:蓝牙、Wi-Fi及其他实现无线通信的网络。具体也可基于实际应用场景需求确定,在此不作限定。
上述示例的应用场景中,是服务器102基于内存检测工具对业务模块进行内存检测,通过终端101接收第一误报信息。
在其他应用场景中,也可以是终端安装有内存检测工具,终端直接基于内存检测工具对业务模块进行内存检测,并由终端接收第一误报信息。上述的应用场景并不对本申请的内存检测方法可用于的应用场景进行限定。
本申请实施例提供一种内存检测方法,参见图2所示,以应用于终端为例,该内存检测方法包括:步骤S201至步骤S202。
S201、基于内存检测工具对目标业务模块进行内存检测,得到初始检测结果。
可选地,终端中的内存检测工具可以是valgrind,valgrind可以针对目标业务模块的每个代码的检测,所以当每一条代码出现错误时都会相应的报错,形成初始检测结果。
可选地,基于内存检测工具对目标业务模块进行内存检测,得到初始检测结果,包括:基于内存检测工具启动对目标业务模块,并执行对目标业务模块的代码;在对目标业务模块的代码的执行满足预设条件时,停止对目标业务模块的代码的执行;预设条件,包括:对目标业务模块的代码的执行结束或内存检测工具接收到停止执行指令;生成与对目标业务模块对应的第一检测结果。
例如,目标业务模块的代码的执行之后,才会生成最终的valgrind检测报告。关于目标业务模块的代码,对于非常驻的目标业务模块,可以等目标业务模块自己执行结束,对于常驻的目标业务模块,可以使用停止执行指令停止目标业务模块的代码的执行。
可选地,基于内存检测工具对目标业务模块进行内存检测,得到初始检测结果,包括:基于内存检测工具对目标业务模块进行内存检测,生成指定格式的检测报告;对指定格式的检测报告进行解析,获取初始检测结果;初始检测结果包括:堆栈信息、过滤规则信息、解析模块名称、异常类型信息和异常描述信息中的至少一种。
具体地,指定格式是在内存检测工具的设置参数中预先设置的。同理,
S202、基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果。
可选地,误报规则数据库存储有误报信息,基于误报信息可以对初始检测结果中的误报的检测结果进行过滤屏蔽,从而实现对初始检测结果的校正,得到内存检测结果。
可选地,基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,生成指定格式的检测报告;对指定格式的检测报告进行解析,获取内存检测结果;内存检测结果包括:堆栈信息、过滤规则信息、解析模块名称、异常类型信息和异常描述信息中的至少一种。
具体地,误报信息包括过滤规则信息,基于过滤规则信息可以将初始检测结果中的误报的检测结果进行过滤屏蔽,本申请实施例中涉及的第一误报信息、第二误报信息、第三误报信息等均为误报信息。
例如:终端通过安装的valgrind在进行内存检测时,初始检测结果中有一些错误是存在于***静态链接lib库中的或者与业务代码无关,但是每次执行都会报出来。valgrind会提供suppression的特性用来忽略某些报错,误报规则数据库预存的误报信息可以实现suppression的特性。误报规则数据库预存的误报信息包括suppression规则,简称为supp规则,supp规则作为过滤规则信息。
可选地,基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果,包括:获取误报信息的过滤规则信息;若初始检测结果中存在与过滤规则信息相匹配的检测结果,则将相匹配的检测结果从初始检测结果中删除,将初始检测结果的其余检测结果作为内存检测结果。
其中,误报规则数据库是基于步骤A1-A4的方式生成的:
A1、基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,接收针对第一检测结果的第一误报信息。
本申请实施例采用终端中的内存检测工具对多个第一样本业务模块进行内存检测,从而可以获得第一检测结果,得到大量检测结果的样本。然后,可以基于第一检测结果进行人工研判,通过存在于***静态链接lib库中的或者与业务代码无关或者其他基于人工经验筛选出针对第一检测结果的第一误报信息。具体地,响应于针对第一检测结果的选择操作,确定第一检测结果的第一误报信息。
A2、从第一检测结果中,获取除第一误报信息对应的第一检测结果之外的检测结果,作为第二检测结果。
本申请实施例在终端中在筛选出第一误报信息后,还可以对第一检测结果中剩下的第二检测结果进行继续的筛选。
A3、基于第一误报信息,对第二检测结果进行筛选,获取针对第二检测结果的第二误报信息。
本申请实施例的终端基于第一误报信息继续对除第一误报信息对应的第一检测结果之外的检测结果进行二次筛选,获取针对第二检测结果的第二误报信息,自动研判出更多误报信息,防止遗漏误报信息。
在本实施例中,第一检测结果包括多个检测结果,第一检测结果中的每个检测结果进行处理时均可以作为一个第一检测结果,第二检测结果包括至少一个检测结果,第二检测结果中的每个检测结果进行处理时均可以作为一个第二检测结果。
在本实施例中,第一误报信息包括至少一个误报信息,每个误报信息进行处理时均可以作为第一误报信息,第二误报信息包括至少一个误报信息,每个误报信息进行处理时均可以作为第二误报信息,其余检测结果和误报信息类似,再次不再赘述。同时,检测结果和误报信息包含的信息可以相同,即误报信息是从检测结果中挑选出的误报的检测结果。本领域技术人员可以理解的是,误报信息也可以误报的检测结果中获取的部分信息。
在一些实施例中,基于第一误报信息,对第二检测结果进行筛选,获取针对第二检测结果的第二误报信息,包括:将第一误报信息和第二检测结果进行匹配,确定第一误报信息和第二检测结果的相似度;若相似度大于预设相似度阈值,则将第二检测结果作为第二误报信息。
进一步地,将第一误报信息和第二检测结果进行匹配,确定第一误报信息和第二检测结果的相似度,包括:获取第一误报信息的堆栈信息和第二检测结果的堆栈信息;确定第一误报信息的堆栈信息和第二检测结果的堆栈信息的相似度,作为第一误报信息和第二检测结果的相似度。
作为一种示例,参见图3所示,示出了基于第一误报信息,对第二检测结果进行筛选,获取针对第二检测结果的第二误报信息的步骤,包括:步骤S301至步骤S303。
S301、将第一误报信息和第二检测结果进行匹配,确定第一误报信息和第二检测结果的相似度。
可选地,将第一误报信息和第二检测结果进行匹配,是针对每一个第二检测结果,将第二检测结果与每一个第一误报信息都进行匹配。
在一些实施例中,将第一误报信息和第二检测结果进行匹配,确定第一误报信息和第二检测结果的相似度,包括:获取第一误报信息的堆栈信息和第二检测结果的堆栈信息;确定第一误报信息的堆栈信息和第二检测结果的堆栈信息的相似度,作为第一误报信息和第二检测结果的相似度。
可选地,堆栈信息是运行进程的行为的堆栈信息。确定第一误报信息的堆栈信息和第二检测结果的堆栈信息的相似度,包括:确定第一误报信息的堆栈信息和第二检测结果的堆栈信息的字符串的相似度或关键字匹配的相似度。可以想到的是,第一误报信息的堆栈信息和第二检测结果的堆栈信息的相似度也可以通过机器学习算法或其他堆栈信息的相似度的匹配算法确定。
S302、判断第一误报信息和第二检测结果的相似度是否大于预设相似度阈值;若是,执行步骤S303;若否,结束。
S303、将第二检测结果作为第二误报信息。
A4、将第一误报信息和第二误报信息增加至误报规则数据库的误报信息中。
基于上述步骤A1至A4,本申请实施例将第一误报信息和第二误报信息增加至误报规则数据库的误报信息中,即将人工研判和自动研判的误报信息加入误报规则数据库的误报信息中,形成用于内存检测的误报规则数据库。最后,将误报规则数据库应用到后续的内存检测工具的内存检测中,例如:valgrind内存检测中,达到降低误报率的目的。
基于上述步骤S201至S202,本申请实施例的内存检测方法的误报规则数据库中的误报信息包括对大量的第一样本业务模块进行内存检测,得到第一检测结果后确定的误报信息,是对第一检测结果进行第一次筛选得到第一误报信息,再基于第一误报信息自动对除第一误报信息对应的第一检测结果之外的检测结果进行第二次筛选,获得第二误报信息,然后将第一误报信息和第二误报信息增加至误报规则数据库的误报信息中,这样可以得到比较全面的误报信息,进而采用误报信息对初始检测结果进行校正得到的内存检测结果,能够有效地降低误报率,提高内存检测结果的可信度。
同时,本申请实施例的误报信息的增加是一个持续性的过程,可以不断的扩充误报规则数据库,下面以如下两个实施例进行详细说明。
在一些实施例中,基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果之后,还包括:接收针对内存检测结果的第三误报信息;将第三误报信息增加至误报规则数据库的误报信息中。
本申请实施例在对目标业务模块进行内存检测得到内存检测结果之后,可以继续对内存检测结果进行人工研判,接收针对第一检测结果的第一误报信息。其中,第一误报信息是通过如下方式生成的:响应于针对第一检测结果的选择操作,确定第一检测结果的第一误报信息。
在一些实施例中,参见图4所示,示出了基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果之后的步骤,还包括:步骤S401至步骤S404。
S401、接收针对多个目标业务模块的内存检测结果的第四误报信息。
S402、从多个目标业务模块的内存检测结果中,获取除第四误报信息对应的内存检测结果之外的检测结果,作为第三检测结果。
S403、基于第四误报信息,对第三检测结果进行筛选,获取针对第三检测结果的第五误报信息。
S404、将第四误报信息和第五误报信息增加至误报规则数据库的误报信息中。
本申请实施例的终端可以将多个目标业务模块的内存检测结果作为第一检测结果继续进行人工研判和自动研判的过程,得到第四误报信息和第五误报信息加入误报规则数据库的误报信息中,形成用于内存检测的误报规则数据库,具体内容与第一检测结果的处理过程一致,再此不再赘述。
本领域技术人员可以理解的是,基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果之后,也可以直接针对一个目标业务模块的内存检测结果获取误报信息。
在一些实施例中,基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果,包括:获取误报信息的过滤规则信息;若初始检测结果中存在与过滤规则信息相匹配的检测结果,则将相匹配的检测结果从初始检测结果中删除,将初始检测结果的其余检测结果作为内存检测结果。
可选地,误报信息包括过滤规则信息,过滤规则信息用于将初始检测结果中与过滤规则信息相匹配的检测结果过滤掉。
在一些实施例中,基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,包括:
(1)针对每一第一样本业务模块,基于内存检测工具启动第一样本业务模块,并执行第一样本业务模块的代码;
(2)在对第一样本业务模块的代码的执行满足预设条件时,停止对第一样本业务模块的代码的执行;预设条件,包括:第一样本业务模块的代码的执行结束或内存检测工具接收到停止执行指令;
(3)生成与第一样本业务模块对应的第一检测结果。
在一些实施例中,基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,包括:基于内存检测工具对多个第一样本业务模块进行内存检测,生成指定格式的检测报告;对指定格式的检测报告进行解析,获取第一检测结果;第一检测结果包括:堆栈信息、过滤规则信息、解析模块名称、异常类型信息和异常描述信息中的至少一种。
作为一种示例,参见图5所示,示出了一种内存检测方法的流程图。本申请实施例的内存检测方法,以应用于终端为例,该内存检测方法包括步骤S501至步骤S505。
S501、发起valgrind内存检测,收集检测结果。
在本实施例中,终端中的内存检测工具以valgrind为例进行说明。valgrind发起大量第一样本业务模块的valgrind内存检测,解析上报检测结果到终端。
具体地,valgrind对每个第一样本业务模块进行valgrind内存检测的内容参见下面图6所示的实施例的内容。
S502、检测结果人工研判,将误报结果加入到误报规则数据库。
可选地,本申请实施例先对获取到的所有检测结果在终端上进行人工研判,确定检测结果中的误报信息。其中,确定检测结果中的误报信息,包括:响应于针对检测结果的选择操作,将该被选中的检测结果作为误报信息;误报信息包括过滤规则信息和堆栈信息。
本申请实施例先对检测结果进行人工研判,将误报的检测结果加入误报规则数据库的误报信息中。误报信息包括堆栈信息和supp规则信息。在valgrind内存检测中,过滤规则信息为supp规则。人工研判可以依靠研判人员的经验和专业能力,人工研判的准确性可以大大提高误报优化的效果。
S503、检测结果自动研判,将误报结果加入到误报规则数据库。
具体地,在人工研判确定误报信息的基础上,在基于人工确认的误报信息继续进行检测结果的自动研判,将误报信息和检测结果进行匹配,确定误报信息和检测结果的相似度;若相似度大于预设相似度阈值,则将检测结果作为误报信息。其中,进行自动研判的原理与步骤A3的原理一致。
在本实施例中,为了降低人工研判的工作量,将已经人工研判为误报的检测结果的堆栈作为种子,称为“种子堆栈”,将未研判检测结果的堆栈与“种子堆栈”进行相似度对比,当相似度大于预设相似度阈值时,将该检测结果自动判断为误报,对应的误报信息的堆栈信息和supp规则加入到误报规则数据库中。
其中,预设相似度阈值需要根据实际情况不断调整,比如通过观察已有误报规则中,类似堆栈的相似度情况来决定。本申请实施例可以将90%作为预设相似度阈值。
作为一种示例,确定第一误报信息的堆栈信息和第二检测结果的堆栈信息的相似度,包括:确定第一误报信息的堆栈信息和第二检测结果的堆栈信息的字符串的相似度。
具体地,确定第一误报信息的堆栈信息和第二检测结果的堆栈信息的相似度,包括:获取第一误报信息的堆栈信息的第一字符串长度、以及第二检测结果的堆栈信息的第二字符串长度;获取长度总和与预设莱文斯坦距离的差值,并基于差值相对于长度总和的占比,确定第一误报信息的堆栈信息和第二检测结果的堆栈信息的相似度;长度总和为第一字符串长度和第二字符串长度之和。
可选地,两个堆栈信息的相似度的计算可以使用莱文斯坦比(Levenshtein.ratio)算法,计算公式r=(sum-ldist)/sum,其中sum是指两个堆栈信息str1和tr2字串的长度总和,ldist是类编辑距离,即莱文斯坦距离的差值。这个算法在不同编程语言下都有现成的库可以使用。
S504、误报规则数据库的误报信息应用到新的内存检测中,收集新的检测结果。
本申请实施例基于大量的第一样本业务模块获取了比较全面的误报信息,可以将误报信息应用到后续新的内存检测中,可以降低内存检测的误报率。同时,收集新的检测结果便于持续确定误报信息,不断提高内存检测结果的可信度。
可选地,将第一误报信息和第二误报信息增加至误报规则数据库的误报信息中之后,包括:将第一误报信息的过滤规则信息和第二误报信息的过滤规则信息,存储到预设过滤文件中;
对应地,基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果,包括:
基于针对预设过滤文件的调用文件路径信息,对初始检测结果进行校正,得到内存检测结果。
具体地,本申请实施例将人工研判和堆栈相似度的自动研判形成误报规则数据库之后,在再次发起valgrind检测时候,将误报规则数据库中的supp规则放到suppression文件中,通过参数--suppressions={path_to_suppressions}将误报规则应用到内存检测中,使最终生成的检测报告不再包含与误报规则想匹配的异常项,达到降低误报率的目的。
S505、对新的检测结果继续检测,持续研判,填充误报规则数据库中的误报信息,之后执行步骤S502。
可选地,继续对新的检测结果进行人工研判,接收针对新的检测结果的人工研判的误报信息。从新的检测结果中,获取除人工研判的误报信息对应的检测结果之外的剩余检测结果,基于人工研判的误报信息对剩余检测结果进行筛选,得到自动研判的误报信息,继续将人工研判的误报信息和自动研判的误报信息增加至误报规则数据库的误报信息中。
本申请实施例可以对新生成的检测结果继续进行人工研判和自动研判,不断丰富误报规则数据库,不断优化误报,降低误报率。
作为一种示例,参见图6示,示出了一种基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果的步骤的流程图。基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果的具体步骤包括:步骤S601至步骤S604。
S601、针对每一第一样本业务模块,基于内存检测工具启动第一样本业务模块。
可选地,终端基于内存检测工具启动第一样本业务模块。基于内存检测工具启动第一样本业务模块,包括:基于内存检测工具的设置参数,启动第一样本业务模块。
具体地,终端在使用valgrind拉起第一样本业务模块的时候,需要预先设置valgrind的设置参数。设置参数包括使用工具信息、过滤规则信息和调用文件路径信息。
作为一种示例,设置参数使用工具信息、过滤规则信息和调用文件路径信息分别为:--tool=memcheck、--gen-suppressions=all、--suppressions={path_to_suppressions},这三个设置参数是必须设置的。
其中,tool=memcheck表示使用valgrind中的内存检测工具进行检测;--gen-suppressions=all表示生成每个检测结果的suppression规则,这个规则是进行误报过滤规则,即过滤规则信息,是误报优化的关键;--suppressions={path_to_suppressions}表示检测时使用suppression规则文件进行误报过滤,这个文件是基于误报规则数据库中的误报信息生成。
S602、执行第一样本业务模块的代码。
可选地,终端中的valgrind的检测是动态检测,执行到的代码才会被检测到,执行的代码越多,检测结果越全。代码的执行可以通过执行用例或直接发起请求等方式实现,这里不做限制。在本申请实施例中,可以主要通过执行第一样本业务模块的所有测试用例来执行尽量多的业务代码。
S603、在对第一样本业务模块的代码的执行满足预设条件时,停止对第一样本业务模块的代码的执行;预设条件,包括:第一样本业务模块的代码的执行结束或内存检测工具接收到停止执行指令。
可选地,结束第一样本业务模块的代码的执行之后,才会生成最终的valgrind检测报告。关于第一样本业务模块的代码,对于非常驻的第一样本业务模块,可以等第一样本业务模块自己执行结束,对于常驻的第一样本业务模块,可以使用kill-9或者其他的信号来退出第一样本业务模块的代码的执行。
S604、生成与第一样本业务模块对应的第一检测结果。
在一些实施例中,基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,包括:
基于内存检测工具对多个第一样本业务模块进行内存检测,生成指定格式的检测报告;
对指定格式的检测报告进行解析,获取第一检测结果;第一检测结果包括:堆栈信息、过滤规则信息、解析模块名称、异常类型信息和异常描述信息中的至少一种。
具体地,生成与第一样本业务模块对应的第一检测结果,包括:生成与第一样本业务模块对应的指定格式的检测报告,对指定格式的检测报告进行解析,获取第一检测结果。
内存检测结束之后,会生成对应的检测报告,检测报告的形式跟valgrind拉起第一样本业务模块时的设置参数预先设定有关,即设置参数包括格式信息。本申请可以通过--xml=yes、--xml-file={path_to_xml_result_file}使用最终的检测报告是xml格式的文件,也可以修改参数生成其他形式的报告,具体设置方式参照valgrind的官网使用手册。
生成检测报告之后,需要对检测报告进行解析,将检测报告中的每个异常项解析出来上报到服务器,可以包括需要解析模块名、异常类型、异常描述、异常堆栈、异常supp等字段。
作为一种示例,参见图7所示,示出了第一检测结果对应的信息的结构示意图。如图7所示,第一检测结果包括堆栈信息、过滤规则信息、解析模块名称、异常类型信息和异常描述信息。其中,堆栈信息和过滤规则信息是确定误报信息的关键信息,堆栈信息用于确定误报信息和检测结果的相似度;过滤规则信息用于对初始检测结果进行校正,得到内存检测结果。
基于上述内容,本申请实施例可以针对valgrind内存检测结果的误报,并基于valgrind的suppression功能特性提出了一种误报优化的方法,可以有效降低valgrind内存检测结果的误报率。首先收集第一样本业务模块的valgrind内存检测结果;然后基于这些检测结果进行人工研判,获取误报的堆栈信息和supp规则信息;再通过与人工研判为误报信息的堆栈信息进行相似度对比,自动研判出更多误报的堆栈信息和supp规则信息,形成最终的误报规则数据库;最后将误报规则数据库应用到后续的valgrind内存检测中,达到降低误报率的目的。人工研判和堆栈相似度自动研判是一个持续性的过程,可以不断的扩充误报规则数据库。
本申请实施例内存检测方法可以对DevOps流程中对所有待发布的目标业务模块进行valgrind内存检测,从而可以不断优化误报,降低误报率,不断提高内存检测结果的可信度。
基于同一发明构思,本申请实施例提供一种内存检测装置,参见图8所示,该内存检测装置80包括:检测模块801和校正模块802。
检测模块801用于基于内存检测工具对目标业务模块进行内存检测,得到初始检测结果。
校正模块802用于基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果。其中,误报规则数据库是基于如下方式生成的:基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,接收针对第一检测结果的第一误报信息;从第一检测结果中,获取除第一误报信息对应的第一检测结果之外的检测结果,作为第二检测结果;基于第一误报信息,对第二检测结果进行筛选,获取针对第二检测结果的第二误报信息;将第一误报信息和第二误报信息增加至误报规则数据库的误报信息中。
可选地,检测模块801用于基于内存检测工具启动对目标业务模块,并执行对目标业务模块的代码;在对目标业务模块的代码的执行满足预设条件时,停止对目标业务模块的代码的执行;预设条件,包括:对目标业务模块的代码的执行结束或内存检测工具接收到停止执行指令;生成与对目标业务模块对应的第一检测结果。
可选地,检测模块801还用于基于内存检测工具对目标业务模块进行内存检测,生成指定格式的检测报告;对指定格式的检测报告进行解析,获取内存检测结果;内存检测结果包括:堆栈信息、过滤规则信息、解析模块名称、异常类型信息和异常描述信息中的至少一种。
可选地,校正模块802还用于获取误报信息的过滤规则信息;若初始检测结果中存在与过滤规则信息相匹配的检测结果,则将相匹配的检测结果从初始检测结果中删除,将初始检测结果的其余检测结果作为内存检测结果。
参见图9所示,示出了一种内存检测装置的结构示意图,该内存检测装置80还包括:处理模块803。
处理模块803用于基于内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,接收针对第一检测结果的第一误报信息;从第一检测结果中,获取除第一误报信息对应的第一检测结果之外的检测结果,作为第二检测结果;基于第一误报信息,对第二检测结果进行筛选,获取针对第二检测结果的第二误报信息;将第一误报信息和第二误报信息增加至误报规则数据库的误报信息中。
可选地,处理模块803还用于将第一误报信息和第二检测结果进行匹配,确定第一误报信息和第二检测结果的相似度;若相似度大于预设相似度阈值,则将第二检测结果作为第二误报信息。
可选地,处理模块803还用于基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果之后,接收针对内存检测结果的第三误报信息;将第三误报信息增加至误报规则数据库的误报信息中。
可选地,处理模块803还用于基于内存检测工具对应的误报规则数据库中的误报信息对初始检测结果进行校正,得到内存检测结果之后,接收针对多个目标业务模块的内存检测结果的第四误报信息;从多个目标业务模块的内存检测结果中,获取除第四误报信息对应的内存检测结果之外的检测结果,作为第三检测结果;基于第四误报信息,对第三检测结果进行筛选,获取针对第三检测结果的第五误报信息;将第四误报信息和第五误报信息增加至误报规则数据库的误报信息中。
可选地,处理模块803还用于获取第一误报信息的堆栈信息和第二检测结果的堆栈信息;确定第一误报信息的堆栈信息和第二检测结果的堆栈信息的相似度,作为第一误报信息和第二检测结果的相似度。
可选地,处理模块803还用于针对每一第一样本业务模块,基于内存检测工具启动第一样本业务模块,并执行第一样本业务模块的代码;在对第一样本业务模块的代码的执行满足预设条件时,停止对第一样本业务模块的代码的执行;预设条件,包括:第一样本业务模块的代码的执行结束或内存检测工具接收到停止执行指令;生成与第一样本业务模块对应的第一检测结果。
可选地,处理模块803还用于基于内存检测工具对多个第一样本业务模块进行内存检测,生成指定格式的检测报告;对指定格式的检测报告进行解析,获取第一检测结果;第一检测结果包括:堆栈信息、过滤规则信息、解析模块名称、异常类型信息和异常描述信息中的至少一种。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
应用本申请实施例的内存检测装置,至少可以实现如下有益效果:
本申请实施例的内存检测装置的误报规则数据库中的误报信息包括对大量的第一样本业务模块进行内存检测,得到第一检测结果后确定的误报信息,是对第一检测结果进行第一次筛选得到第一误报信息,再基于第一误报信息自动对除第一误报信息对应的第一检测结果之外的检测结果进行第二次筛选,获得第二误报信息,然后将第一误报信息和第二误报信息增加至误报规则数据库的误报信息中,这样可以得到比较全面的误报信息,进而采用误报信息对初始检测结果进行校正得到的内存检测结果,能够有效地降低误报率,提高内存检测结果的可信度。
基于同一发明构思,本申请实施例提供一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,处理器执行计算机程序以实现本申请实施例的任一项方法的步骤。
在一个可选实施例中提供了一种电子设备,如图10所示,图10所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004,收发器4004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器4003用于存储执行本申请实施例的计算机程序,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
其中,电子设备包括但不限于:终端或服务器。
本申请实施例的电子设备可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的电子设备中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
应用本申请实施例的电子设备,至少可以实现如下有益效果:
本申请实施例的电子设备的误报规则数据库中的误报信息包括对大量的第一样本业务模块进行内存检测,得到第一检测结果后确定的误报信息,是对第一检测结果进行第一次筛选得到第一误报信息,再基于第一误报信息自动对除第一误报信息对应的第一检测结果之外的检测结果进行第二次筛选,获得第二误报信息,然后将第一误报信息和第二误报信息增加至误报规则数据库的误报信息中,这样可以得到比较全面的误报信息,进而采用误报信息对初始检测结果进行校正得到的内存检测结果,能够有效地降低误报率,提高内存检测结果的可信度。
基于同一发明构思,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本申请实施例的任一项方法的步骤。
本申请的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
本申请实施例的计算机可读介质可以是包含在电子设备中;也可以是单独存在,而未装配入电子设备中。
基于同一发明构思,本申请实施例一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现本申请实施例的任一项方法的步骤。
应用本申请实施例的计算机程序产品,至少可以实现如下有益效果:
本申请实施例的计算机程序产品的误报规则数据库中的误报信息包括对大量的第一样本业务模块进行内存检测,得到第一检测结果后确定的误报信息,是对第一检测结果进行第一次筛选得到第一误报信息,再基于第一误报信息自动对除第一误报信息对应的第一检测结果之外的检测结果进行第二次筛选,获得第二误报信息,然后将第一误报信息和第二误报信息增加至误报规则数据库的误报信息中,这样可以得到比较全面的误报信息,进而采用误报信息对初始检测结果进行校正得到的内存检测结果,能够有效地降低误报率,提高内存检测结果的可信度。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。

Claims (12)

1.一种内存检测方法,其特征在于,包括:
基于内存检测工具对目标业务模块进行内存检测,得到初始检测结果;
基于所述内存检测工具对应的误报规则数据库中的误报信息对所述初始检测结果进行校正,得到内存检测结果;
其中,所述误报规则数据库是基于如下方式生成的:
基于所述内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,接收针对所述第一检测结果的第一误报信息;
从所述第一检测结果中,获取除所述第一误报信息对应的第一检测结果之外的检测结果,作为第二检测结果;
基于所述第一误报信息,对所述第二检测结果进行筛选,获取针对所述第二检测结果的第二误报信息;
将所述第一误报信息和所述第二误报信息增加至所述误报规则数据库的误报信息中。
2.根据权利要求1所述的内存检测方法,其特征在于,所述基于所述第一误报信息,对所述第二检测结果进行筛选,获取针对所述第二检测结果的第二误报信息,包括:
将所述第一误报信息和所述第二检测结果进行匹配,确定所述第一误报信息和所述第二检测结果的相似度;
若所述相似度大于预设相似度阈值,则将所述第二检测结果作为所述第二误报信息。
3.根据权利要求1所述的内存检测方法,其特征在于,所述基于所述内存检测工具对应的误报规则数据库中的误报信息对所述初始检测结果进行校正,得到内存检测结果之后,还包括:
接收针对所述内存检测结果的第三误报信息;
将所述第三误报信息增加至所述误报规则数据库的误报信息中。
4.根据权利要求1所述的内存检测方法,其特征在于,所述基于所述内存检测工具对应的误报规则数据库中的误报信息对所述初始检测结果进行校正,得到内存检测结果之后,还包括:
接收针对多个目标业务模块的内存检测结果的第四误报信息;
从多个目标业务模块的所述内存检测结果中,获取除所述第四误报信息对应的内存检测结果之外的检测结果,作为第三检测结果;
基于所述第四误报信息,对所述第三检测结果进行筛选,获取针对所述第三检测结果的第五误报信息;
将所述第四误报信息和所述第五误报信息增加至所述误报规则数据库的误报信息中。
5.根据权利要求2所述的内存检测方法,其特征在于,所述将所述第一误报信息和所述第二检测结果进行匹配,确定所述第一误报信息和所述第二检测结果的相似度,包括:
获取所述第一误报信息的堆栈信息和所述第二检测结果的堆栈信息;
确定所述第一误报信息的堆栈信息和所述第二检测结果的堆栈信息的相似度,作为所述第一误报信息和所述第二检测结果的相似度。
6.根据权利要求1所述的内存检测方法,其特征在于,所述基于所述内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,包括:
针对每一所述第一样本业务模块,基于所述内存检测工具启动第一样本业务模块,并执行所述第一样本业务模块的代码;
在对所述第一样本业务模块的代码的执行满足预设条件时,停止对所述第一样本业务模块的代码的执行;所述预设条件,包括:所述第一样本业务模块的代码的执行结束或所述内存检测工具接收到停止执行指令;
生成与所述第一样本业务模块对应的第一检测结果。
7.根据权利要求1所述的内存检测方法,其特征在于,所述基于所述内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,包括:
基于所述内存检测工具对多个第一样本业务模块进行内存检测,生成指定格式的检测报告;
对所述指定格式的检测报告进行解析,获取第一检测结果;所述第一检测结果包括:堆栈信息、过滤规则信息、解析模块名称、异常类型信息和异常描述信息中的至少一种。
8.根据权利要求1所述的内存检测方法,其特征在于,所述基于所述内存检测工具对应的误报规则数据库中的误报信息对所述初始检测结果进行校正,得到内存检测结果,包括:
获取所述误报信息的过滤规则信息;
若所述初始检测结果中存在与所述过滤规则信息相匹配的检测结果,则将所述相匹配的检测结果从所述初始检测结果中删除,将所述初始检测结果的其余检测结果作为所述内存检测结果。
9.一种内存检测装置,其特征在于,包括:
检测模块,用于基于内存检测工具对目标业务模块进行内存检测,得到初始检测结果;
校正模块,用于基于所述内存检测工具对应的误报规则数据库中的误报信息对所述初始检测结果进行校正,得到内存检测结果;
其中,所述误报规则数据库是基于如下方式生成的:
基于所述内存检测工具对多个第一样本业务模块进行内存检测,得到第一检测结果,接收针对所述第一检测结果的第一误报信息;
从所述第一检测结果中,获取除所述第一误报信息对应的第一检测结果之外的检测结果,作为第二检测结果;
基于所述第一误报信息,对所述第二检测结果进行筛选,获取针对所述第二检测结果的第二误报信息;
将所述第一误报信息和所述第二误报信息增加至所述误报规则数据库的误报信息中。
10.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-8任一项所述方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8任一项所述方法的步骤。
12.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8任一项所述方法的步骤。
CN202211529701.5A 2022-11-30 2022-11-30 内存检测方法、装置、电子设备及可读存储介质 Pending CN118113589A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211529701.5A CN118113589A (zh) 2022-11-30 2022-11-30 内存检测方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211529701.5A CN118113589A (zh) 2022-11-30 2022-11-30 内存检测方法、装置、电子设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN118113589A true CN118113589A (zh) 2024-05-31

Family

ID=91214588

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211529701.5A Pending CN118113589A (zh) 2022-11-30 2022-11-30 内存检测方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN118113589A (zh)

Similar Documents

Publication Publication Date Title
US11086671B2 (en) Commanded message-based job flow cancellation in container-supported many task computing
CN107506451B (zh) 用于数据交互的异常信息监控方法及装置
US11204809B2 (en) Exchange of data objects between task routines via shared memory space
US10747517B2 (en) Automated exchanges of job flow objects between federated area and external storage space
US20120192153A1 (en) Method and system for providing a testing framework
CN102236549A (zh) 跨动态边界的运行时分析的可视化
CN108139962B (zh) 遥测***扩展
US20220117046A1 (en) Implicit status in many task computing
CN105160018A (zh) 一种复制/粘贴图片的方法、装置和***
CN114005055A (zh) 算法应用元生成方法、装置、设备及计算机可读存储介质
CN114168149A (zh) 一种数据转换方法及装置
CN111967137B (zh) 一种半导体设备建模方法及装置
CN113377342B (zh) 一种项目构建方法、装置、电子设备及存储介质
CN114721932A (zh) 一种数据处理方法、装置、设备及存储介质
US9059992B2 (en) Distributed mobile enterprise application platform
CN118113589A (zh) 内存检测方法、装置、电子设备及可读存储介质
CN110297639B (zh) 用于检测代码的方法和装置
CN113032256A (zh) 自动化测试方法、装置、计算机***和可读存储介质
CN111880840A (zh) 数据获取方法、装置、电子设备及存储介质
US20240160558A1 (en) Automatic testing of interrelated components of a software application
US20240118991A1 (en) Application scenario injection and validation system
US11513850B2 (en) Coordinated performance controller failover in many task computing
CN115904472A (zh) 资源文件的状态确定方法、装置、电子设备和介质
CN117149633A (zh) 脚本处理的方法、装置、电子设备和存储介质
CN114510396A (zh) 私有云巡检方法、设备及计算机可读介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication