CN111984541A - 一种内存泄漏检测方法及装置、终端 - Google Patents
一种内存泄漏检测方法及装置、终端 Download PDFInfo
- Publication number
- CN111984541A CN111984541A CN202010899911.8A CN202010899911A CN111984541A CN 111984541 A CN111984541 A CN 111984541A CN 202010899911 A CN202010899911 A CN 202010899911A CN 111984541 A CN111984541 A CN 111984541A
- Authority
- CN
- China
- Prior art keywords
- terminal
- information
- memory
- log file
- function
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供一种内存泄漏检测方法及装置、终端,涉及软件测试技术,可以提高检测运行应用程序APP的过程中内存泄漏位置的效率和自动化程度。应用于第一终端的内存泄漏检测方法包括:获取第一APP的测试信息,并向第二终端发送测试信息;测试信息包括第一APP的至少一个第一功能对应的触发指令;接收至少一个第一功能对应的至少一个日志文件;至少一个日志文件为第二终端利用测试信息生成的;分析至少一个日志文件,确定运行至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息,以确定出第二终端运行至少一个第一功能的过程中发生内存泄漏的位置。
Description
技术领域
本申请涉及软件测试技术,尤其涉及一种内存泄漏检测方法及装置、终端。
背景技术
随着计算机应用需求的日益增加,应用程序(Application,APP)的设计与开发也相应的日趋复杂,开发人员在APP实现的过程中处理的变量也大量增加,进而导致内存泄漏(Memory Leak)的可能性大大增加。其中,内存泄漏是指在APP运行过程中,为该APP己动态分配的堆内存由于某种原因程序未释放或无法释放。内存泄露会造成系统内存的浪费,如果发生大量内存泄露,则会因为大量内存被占用而导致没有足够的内存运行APP,使得APP运行速度减慢甚至系统崩溃等严重后果。因此,发现内存泄漏变得越来越重要。
相关方案中,开发人员针对待测试的APP,手动控制某些终端运行该APP,并获取这些终端运行该APP的过程中这些终端的堆内容使用情况;然后,开发人员分析获取到的堆内容使用情况,以确定这些终端运行APP的过程中发生内存泄漏的位置等等。该方案需要人工参与,自动化程度较低,确定APP的运行过程中发生内存泄漏的位置的效率也较低。
发明内容
本申请实施例提供一种内存泄漏检测方法内存泄漏检测方法及装置、终端,可以提高检测APP的运行过程中内存泄漏位置的效率和自动化程度。
为实现上述技术目的,本申请实施例采用如下技术方案:
第一方面,本申请实施例提供了一种内存泄漏检测方法,应用于第一终端,该方法包括:获取第一APP的测试信息,并向第二终端发送测试信息;接收至少一个第一功能对应的至少一个日志文件;分析至少一个日志文件,确定运行至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息,以确定出第二终端运行至少一个第一功能的过程中发生内存泄漏的位置。其中,测试信息包括第一APP的至少一个第一功能对应的触发指令。至少一个日志文件为第二终端利用所述测试信息生成的,至少一个日志文件用于记录第二终端运行至少一个第一功能的过程中堆内容的使用情况;至少一个日志文件和至少一个第一功能一一对应。
在一种可能的实施方式中,测试信息还包括第一APP的安装包;其中,第一APP的安装包用于在第二终端上构建内存泄漏检测所需的测试环境、以及控制第二终端生成至少一个日志文件,并向第一终端发送至少一个日志文件。
另一种可能的实施方式中,上述分析至少一个日志文件,确定运行至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息,包括:将至少一个日志文件转换为至少一个分析文件,并从至少一个分析文件中,确定发生内存泄漏的页面信息和发生内存泄漏的对象信息。其中,每个分析文件包括与所占用的堆内存未被释放的页面或所占用的堆内存未被释放的对象相关的引用路径。
另一种可能的实施方式中,在上述分析至少一个日志文件,确定运行至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息之后,该方法还包括:获取测试基础信息;向服务器发送测试基础信息、至少一个日志文件、发生内存泄漏的页面信息和发生内存泄漏的对象信息;接收测试报告,并显示测试报告。其中,测试基础信息包括以下至少一项:第二终端的设备标识、第一APP的版本信息、至少一个第一功能各自对应的场景信息。测试报告表征测试基础信息、至少一个日志文件、发生内存泄漏的页面信息和发生内存泄漏的对象信息之间的映射关系。
第二方面,本申请实施例还提供了一种内存泄漏检测装置,该装置包括:文件获取模块和文件分析模块。其中,文件获取模块,用于获取第一应用程序APP的测试信息,并向第二终端发送测试信息;接收第一APP的至少一个第一功能对应的至少一个日志文件;文件分析模块,用于分析至少一个日志文件,确定运行至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息,以确定出第二终端运行至少一个第一功能的过程中发生内存泄漏的位置。其中,测试信息包括至少一个第一功能对应的触发指令;至少一个日志文件为第二终端利用测试信息生成的,至少一个日志文件用于记录第二终端运行至少一个第一功能的过程中堆内存的使用情况;至少一个日志文件和至少一个第一功能一一对应。
在一种可能的实施方式中,测试信息还包括第一APP的安装包。其中,第一APP的安装包具有在第二终端上构建内存泄漏检测所需的测试环境、以及控制第二终端生成至少一个日志文件,并向内存泄漏检测装置发送至少一个日志文件的能力。
另一种可能的实施方式中,文件分析模块,具体用于将至少一个日志文件转换为至少一个分析文件,并从至少一个分析文件中,确定发生内存泄漏的页面信息和发生内存泄漏的对象信息。其中,每个分析文件包括与所占用的堆内存未被释放的页面或所占用的堆内存未被释放的对象相关的引用路径。
另一种可能的实施方式中,该装置还包括:测试报告获取模块和显示模块。其中,测试报告获取模块,用于在上述分析至少一个日志文件,确定运行至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息之后,获取测试基础信息;向服务器发送测试基础信息、至少一个日志文件、发生内存泄漏的页面信息和发生内存泄漏的对象信息;接收测试报告;显示模块,用于显示测试报告。其中,测试基础信息包括以下至少一项:第二终端的设备标识、第一APP的版本信息、至少一个第一功能各自对应的场景信息。测试报告表征测试基础信息、至少一个日志文件、发生内存泄漏的页面信息和发生内存泄漏的对象信息之间的映射关系。
第三方面,本申请实施例还提供了一种终端,终端是第一终端,终端包括:处理器和用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,使得终端执行如第一方面及其任一种可能的实施方式的内存泄漏检测方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机指令,当计算机指令在终端上运行时,使得终端执行如第一方面及其任一种可能的实施方式的内存泄漏检测方法。
可以理解的是,第一终端向第二终端发送第一APP的测试信息;然后,第一终端可以接收到第二终端生成的至少一个第一功能对应的至少一个日志文件。其中,该测试信息包括第一APP的至少一个第一功能对应的触发指令,则第一终端利用第一APP的至少一个第一功能对应的触发指令,能够控制第二终端运行第一APP的至少一个第一功能。其次,该至少一个日志文件为第二终端利用该测试信息生成的,也就是说,第一终端利用该测试信息,还能够控制第二终端生成该至少一个第一功能对应的至少一个日志文件。进而,由于该至少一个日志文件记录有第二终端运行至少一个第一功能的过程中堆内存的使用情况,则第一终端分析该至少一个日志文件,能够确定第二终端运行第一APP的至少一个第一功能的过程中发生内存泄漏的页面信息和对象信息。根据该发生内存泄漏的页面信息和对象信息又能够确定出第二终端运行第一APP的至少一个第一功能的过程中发生内存泄漏的位置。因此可知,无需人工参与,第一终端利用第一APP的测试信息,就确定出第二终端运行第一APP的至少一个第一功能的过程中发生内存泄漏的位置。而无需人工参与,可以提高检测运行第一APP的过程中内存泄漏位置的效率和自动化程度。
附图说明
图1是本申请实施例提供的一种内存泄漏检测方法所涉及的实施环境示意图;
图2是本申请实施例提供的一种内存泄漏检测方法的流程图一;
图3是本申请实施例提供的一种内存泄漏检测方法的流程图二;
图4是本申请实施例提供的一种内存泄漏检测方法的流程图三;
图5是本申请实施例提供的一种前端界面的示意图;
图6是本申请实施例提供的一种内存泄漏检测装置的结构示意图;
图7是本申请实施例提供的一种终端的结构示意图。
具体实施方式
本申请实施例中所述的“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序或者隐含指明所指示的技术特征的数量。例如,第一终端和第二终端是不同的终端。
请参考图1,其示出本申请实施例提供的一种内存泄漏检测方法所涉及的实施环境示意图。如图1所示,该实施环境可以包括第一终端101、第二终端102、以及与第一终端101连接的服务器103。其中,第一终端101可以通过有线网络或无线网络分别连接第二终端102和服务器103。开发人员通过第一终端101创建一个待测试的APP,再将该APP的安装包发送至第二终端102。用户在第二终端102上对该APP进行操作。第一终端101可以获取第二终端102上该APP的使用情况,并将该APP的使用情况保存至服务器103中。
为了检测运行任一个APP的过程中是否存在内存泄漏,在第二终端102运行该APP的情况下,开发人员可以在第一终端101的前端界面上输入adb shell命令,以获取第二终端102上该APP的内存占用情况;然后,根据该APP的内存占用情况判断该APP是否出现内存泄漏。由于第二终端102运行该APP中的较复杂的功能时就会占用较大的内存;因此,根据内存占用情况推测运行该APP的过程中是否发生内存泄漏是不准确的。
为了准确地检测运行该APP的过程中是否发生内存泄漏,开发人员通过第一终端101创建该APP,并在该APP的工程代码中集成用于检测内存泄漏的软件开发工具包(software development kit,SDK),例如,LeakCanary的SDK,生成该APP的安装包。开发人员再将该APP的安装包发送至第二终端102,并控制第二终端102安装该APP。然后,开发人员手动控制第二终端102运行该APP;与此同时,用于检测内存泄漏的SDK对运行该APP的过程中的内存泄漏进行检测,输出记录运行APP的过程中堆内存使用情况的hprof文件。第二终端102上还可以通过浮层等方式显示该hprof文件,开发人员可以点击浮层以查看该hprof文件;或者,开发人员手动控制第二终端102向第一终端101发送该hprof文件,并通过第一终端101的前端界面查看该hprof文件。开发人员可以根据该hprof文件分析确定运行该APP的过程中发生内存泄漏的位置。
上述方案中,需要开发人员手动控制第二终端102运行该APP,以使得第二终端102输出上述hprof文件;再由开发人员手动操作将该hprof文件发送给第一终端101,并在第一终端101上查看和分析该hprof文件,才能确定运行该APP的过程中发生内存泄漏的位置。可以知道,上述方案中需要人工参与确定运行该APP的过程中发生内存泄漏的位置;因此,上述方案存在自动化程度较低,以及效率较低的问题。
示例性的,本申请实施例中的第一终端可以是平板电脑、桌面型、笔记本电脑等;本申请实施例中的第二终端可以是手机、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、车载设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及个人数字助理(personal digital assistant,PDA)、增强现实设备、虚拟现实设备等,本申请实施例对该第一终端和该第二终端的具体形态不作特殊限制。
需要说明的是,本申请实施例提供的内存泄漏检测方法可以应用于第一终端101,或者应用于第一终端101和第二终端102。以内存泄漏检测方法可以应用于第一终端101为例,本申请实施例提供的内存泄漏检测方法的执行主体还可以为内存泄漏检测装置,该内存泄漏检测装置可以为上述第一终端101。该内存泄漏检测装置还可以为安装有可以提供内存泄漏检测功能的应用程序(application,APP);或者,该内存泄漏检测装置还可以为上述第一终端101中的中央处理器(Central Processing Unit,CPU);或者,上述第一终端101中的用于执行内存泄漏检测方法的控制模块。
需要说明的是,图1中的第一终端、第二终端和服务器的数目仅仅是示意性的。根据实际需要,可以具有任意数目的第一终端、第二终端和服务器。
针对上述方案存在的内存泄漏检测不准确,或者自动化程度和效率较低的问题,本申请实施例提出一种内存泄漏检测方法,可以准确检测内存泄漏位置,并提高检测内存泄漏位置的效率和自动化程度。
本申请实施例中,针对任意一个需要测试的APP(即第一APP),第一终端预先保存有第一APP的安装包。该第一APP的安装包为利用第一APP的工程代码生成的第一APP的安装文件;该第一APP的工程代码集成有用于检测内存泄漏的软件开发工具包SDK。其次,第一终端还预先保存有第一APP的至少一个第一功能对应的预设脚本。该预设脚本用于控制对第一APP的至少一个第一功能检测内存泄漏位置;预设脚本可以是指一段程序代码。第一终端利用该第一APP的安装包和该预设脚本,控制第二终端运行第一APP的至少一个第一功能,并检测运行至少一个第一功能的过程中的内存泄漏位置。
参考图2,为本申请实施例提供的第一终端执行内存泄漏检测方法的流程图。如图2所示,该方法可以包括S201-S203。
S201、第一终端获取第一APP的测试信息,并向第二终端发送测试信息;测试信息包括第一APP的至少一个第一功能对应的触发指令。
第一终端响应于开启检测内存泄漏的指令,获取第一APP的测试信息;再通过有线通信方式或无线通信方式,向第二终端发送该测试信息。其中,第一终端可以在检测到开发人员执行开启检测内存泄漏的操作的情况下,生成开启检测内存泄漏的指令。
其中,第一APP的每个第一功能可以为第一APP的任意一个功能。
例如,第一APP为一个视频处理的APP,该视频处理的APP的多个功能可以包括:加载第二终端本地存储的视频或图片,对多个视频进行剪辑,对一个视频加特效等等。该视频处理的APP的第一功能可以为该视频处理的APP的多个功能中的任意一个。
本申请实施例中,第一终端预先保存有第一APP的至少一个第一功能对应的预设脚本。第一终端运行该预设脚本,生成该至少一个第一功能对应的触发指令。
本申请实施例中,测试信息还包括第一APP的安装包。第一APP的安装包用于在第二终端上构建内存泄漏检测所需的测试环境。第一APP的安装包还用于控制第二终端生成至少一个日志文件,并向第一终端发送至少一个日志文件。
本申请实施例中,第一终端预先保存有第一APP的安装包、第一APP的至少一个第一功能对应的预设脚本。第一终端响应于开启检测内存泄漏的指令,运行该预设脚本,生成该至少一个第一功能对应的触发指令;再根据该触发指令和第一APP的安装包,生成测试信息,并向第二终端发送该测试信息。
其中,第一终端可以由该第一APP的安装包和该触发指令组成该测试信息。
可以理解的是,第一终端向第二终端发送测试信息,由于该测试信息包括第一APP的安装包、以及第一APP的至少一个第一功能对应的触发指令。则第二终端接收该测试信息后,可以利用第一APP的安装包,安装第一APP;然后,第二终端在安装第一APP的情况下,响应于该触发指令,运行至少一个第一功能。其次,第一APP的安装包还用于控制第二终端生成至少一个日志文件,并向第一终端发送至少一个日志文件。则在第二终端运行至少一个第一功能的情况下,第二终端还可以自动生成至少一个第一功能对应的至少一个日志文件,并向第一终端发送该至少一个日志文件。如此,第一终端利用测试信息,自动从第二终端接收至少一个第一功能对应的至少一个日志文件,无需人工参与。
S202、第一终端接收至少一个第一功能对应的至少一个日志文件;其中,至少一个日志文件为第二终端利用测试信息生成的;至少一个日志文件用于记录第二终端运行至少一个第一功能的过程中堆内存的使用情况;至少一个日志文件和至少一个第一功能一一对应。
第一终端可以接收第二终端发送的至少一个日志文件。其中,每个日志文件可以为hprof文件。
例如,用于检测内存泄漏的SDK可以为LeakCanary SDK,则第一功能的日志文件为LeakCanary SDK生成的hprof文件。
S203、第一终端分析至少一个日志文件,确定运行至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息,以确定出第二终端运行至少一个第一功能的过程中发生内存泄漏的位置。
第一终端分析每个日志文件,可以确定运行对应的第一功能的过程中发生内存泄漏的页面的信息(即发生内存泄漏的页面信息)、以及发生内存泄漏的对象的信息(即发生内存泄漏的对象信息);或者,可以确定运行对应的第一功能的过程中没有发生内存泄漏的页面和发生内存泄漏的对象。
其中,页面可以是指运行第一功能的过程中的显示页面;对象可以是指一个显示页面的一部分,组合使用多个对象可以建立一个显示页面。页面信息可以为页面的标识或名称等;对象信息可以为对象的标识或名称等。
例如,第一APP的任一个第一功能为一个视频处理的APP中的对视频加特效,则该对视频加特效对应的页面可以包括:显示加特效前的视频的初始页面、显示加特效后的视频的预览页面等等;该对视频加特效对应的对象可以包括:加特效前的视频,加特效后的视频,可以选择的特效。那么,发生内存泄漏的页面可以为该对视频加特效对应的页面中的任意几个,发生内存泄漏的对象可以为该对视频加特效对应的对象中的任意几个。
本申请实施例中,第一终端可以将至少一个日志文件转换为至少一个分析文件,并从至少一个分析文件中,确定发生内存泄漏的页面信息和发生内存泄漏的对象信息。
其中,该日志文件可以为二进制格式的文件。每个分析文件可以包括以下至少一项:与所占用的堆内存未被释放的页面相关的引用路径,与所占用的堆内存未被释放的对象相关的引用路径。
需要说明的是,所占用的堆内存未被释放的页面可能发生内存泄漏,也可能是引用该所占用的堆内存未被释放的页面的其他页面或其他对象发生内存泄漏;同理,所占用的堆内存未被释放的对象可能发生内存泄漏,也可能是引用该所占用的堆内存未被释放的对象的其他页面或其他对象发生内存泄漏。
本申请实施例中,第一终端可以通过预设脚本,将至少一个日志文件转换为至少一个分析文件,并从至少一个分析文件中,确定发生内存泄漏的页面信息和发生内存泄漏的对象信息。
本申请实施例中,第一终端预先安装有用于确定运行第一APP的过程中发生内存泄漏的位置的分析工具。第一终端运行预设脚本,在接收到该至少一个日志文件时,生成分析指令;分析指令用于控制该分析工具分析该至少一个日志文件。第一终端向该分析工具发送该分析指令,通过该分析工具响应于该分析指令,分析至少一个日志文件,输出发生内存泄漏的页面信息和发生内存泄漏的对象信息。
其中,用于确定运行第一APP的过程中发生内存泄漏的位置的分析工具包括:命令行(Command Line Interface,CLI)工具,例如,Shark CLI。
示例性地,第一终端在运行上述预设脚本的过程中,从第二终端接收至少一个日志文件后,该预设脚本输出分析指令。第一终端向CLI工具发送该分析指令。CLI工具响应于该分析指令,将该日志文件转换为分析文件,再从分析文件中确定发生内存泄漏的页面信息和发生内存泄漏的对象信息。
本申请实施例中,在S203之后,第一终端可以显示该发生内存泄漏的页面信息和该发生内存泄漏的对象信息,以使得开发人员可以直接查看该发生内存泄漏的页面信息和发生内存泄漏的对象信息,并针对该发生内存泄漏的页面和该发生内存泄漏的对象解决内存泄漏的问题。
其中,解决内存泄漏的问题的方式可以包括:在第一APP的工程代码中增加针对该发生内存泄漏的页面和该发生内存泄漏的对象的内存释放代码,在第一APP的工程代码中修改针对该发生内存泄漏的页面和该发生内存泄漏的对象的内存释放代码。修改后的内存释放代码用于在至少一个第一功能运行结束的情况下释放该发生内存泄漏的页面和该发生内存泄漏的对象所占用的堆内存。
本申请实施例中,在S203之后,第一终端还可以获取测试基础信息;向服务器发送测试基础信息、至少一个日志文件、发生内存泄漏的页面信息和发生内存泄漏的对象信息;接收测试报告,并显示测试报告。其中,测试基础信息包括以下至少一项:第二终端的设备标识、第一APP的版本信息、至少一个第一功能各自对应的场景信息。测试报告表征测试基础信息、至少一个日志文件、发生内存泄漏的页面信息和发生内存泄漏的对象信息之间的映射关系。如此,开发人员可以直接查看该测试报告,并基于该测试报告可以针对性地解决运行第一APP的过程中存在的内存泄漏的问题。
可以理解的是,第一终端向第二终端发送第一APP的测试信息。由于该测试信息包括第一APP的安装包、以及第一APP的至少一个第一功能对应的触发指令。则第二终端可以利用第一APP的安装包安装第一APP。然后,在安装第一APP的情况下,第二终端响应于该触发指令,运行至少一个第一功能。其次,第一APP的安装包还用于控制第二终端生成至少一个日志文件,并向第一终端发送至少一个日志文件。则在第二终端运行至少一个第一功能的情况下,第二终端还可以自动生成至少一个第一功能对应的至少一个日志文件,并向第一终端发送该至少一个日志文件。也就是说,第一终端利用第一APP的测试信息,自动从第二终端接收该至少一个日志文件。
进一步地,由于该至少一个日志文件记录有第二终端运行至少一个第一功能的过程中堆内存的使用情况,则第一终端分析该至少一个日志文件,能够确定第二终端运行第一APP的至少一个第一功能的过程中发生内存泄漏的页面信息和对象信息。根据该发生内存泄漏的页面信息和对象信息又能够确定出第二终端运行第一APP的至少一个第一功能的过程中发生内存泄漏的位置。因此可知,无需人工参与,第一终端利用第一APP的测试信息,就确定出第二终端运行第一APP的至少一个第一功能的过程中发生内存泄漏的位置。而无需人工参与,可以提高检测运行第一APP的过程中内存泄漏位置的效率和自动化程度。
本申请实施例中,第一终端预先保存有上述第一APP的安装包和上述第一APP对应的预设脚本,第一终端预先安装有上述CLI工具,除此之外,第一终端预设有用户界面(userinterface,UI)自动化框架,在该UI自动化框架中运行预设脚本,以针对该预设脚本对应的第一功能执行内存泄漏检测方法。具体地,如图3所示,第一终端通过该UI自动化框架执行内存泄漏检测方法可以包括S301-S307。
S301、第一终端在UI自动化框架中运行预设脚本,生成触发指令;其中,触发指令用于控制运行第一APP的至少一个第一功能。
S302、第一终端在UI自动化框架中,利用该第一APP的安装包和该触发指令组成测试信息,并向第二终端发送测试信息。
S303、第一终端中的UI自动化框架接收至少一个第一功能对应的至少一个日志文件,并生成分析指令。
其中,至少一个日志文件为第二终端利用测试信息生成的;至少一个日志文件用于记录第二终端运行至少一个第一功能的过程中堆内存的使用情况;至少一个日志文件和至少一个第一功能一一对应。分析指令用于控制CLI工具分析该至少一个日志文件。
S304、第一终端中的UI自动化框架将分析指令发送至CLI工具。
S305、第一终端通过CLI工具响应于分析指令,分析至少一个日志文件,输出运行至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息。
S306、第一终端中的UI自动化框架测试基础信息,并向服务器发送测试基础信息、至少一个日志文件、发生内存泄漏的页面信息和发生内存泄漏的对象信息。
其中,测试基础信息包括以下至少一项:第二终端的设备标识、第一APP的版本信息、至少一个第一功能各自对应的场景信息。
S307、第一终端中的UI自动化框架接收测试报告,并显示测试报告。
其中,测试基础信息包括以下至少一项:第二终端的设备标识、第一APP的版本信息、至少一个第一功能各自对应的场景信息。测试报告表征测试基础信息、至少一个日志文件、发生内存泄漏的页面信息和发生内存泄漏的对象信息之间的映射关系。
第一终端显示该测试报告,开发人员就可以直接根据测试报告,确定出第二终端运行第一APP的至少一个第一功能的过程中发生内存泄漏的位置,并针对第二终端运行第一APP的至少一个第一功能的过程中发生内存泄漏的位置解决内存泄漏的问题。
可以理解的是,第一终端通过UI自动化框架运行预设脚本,生成测试信息用于控制第二终端运行至少一个第一功能、并返回至少一个第一功能的至少一个日志文件;接收到至少一个日志文件时,再生成分析指令,用于控制CLI工具分析该日志文件,得到运行至少一个第一功能的过程中发生内存泄漏的页面信息和发生内存泄漏的对象信息。可以知道,通过UI自动化框架运行预设脚本,无需人工参与,就能够得到第二终端运行至少一个第一功能的过程中发生内存泄漏的页面信息和发生内存泄漏的对象信息,提高了检测内存泄漏的效率和自动化程度。
最后,第一终端向服务器发送该发生内存泄漏的页面信息和发生内存泄漏的对象信息后,从服务器接收测试报告并显示。该测试报告表征测试基础信息、至少一个日志文件、发生内存泄漏的页面信息和发生内存泄漏的对象信息之间的映射关系。如此,开发人员可以直接查看该测试报告,并基于该测试报告可以针对性地解决运行第一APP的过程中存在的内存泄漏的问题。
需要说明的是,第一终端还可以对多个第二终端中的每个第二终端发送测试信息,以获取多个第二终端各自运行至少一个第一功能的过程中发生内存泄漏的页面信息和发生内存泄漏的对象信息。然后,可以得到由多个第二终端的测试基础信息、至少一个日志文件、发生内存泄漏的页面信息和发生内存泄漏的对象信息组成的测试报告。开发人员基于该测试报告,可以更准确确定出导致运行第一APP的过程中发生内存泄漏问题的原因,例如,可以能运行第一APP的某个第二终端所导致的,或者第一APP自身原因导致的等等。
本申请实施例中,第一终端预先保存有上述第一APP的安装包、上述第一APP对应的预设脚本。第一终端利用该第一APP的安装包和该预设脚本,控制第二终端运行第一APP的至少一个第一功能。第二终端运行第一APP的至少一个第一功能,并生成该至少一个第一功能对应的至少一个日志文件,发送给第一终端。第一终端分析该至少一个日志文件,确定运行至少一个第一功能的过程中的内存泄漏位置。具体地,参见图4,为本申请实施例提供的第一终端和第二终端执行内存泄漏检测方法的流程图。如图4所示,该方法可以包括S401-S405。
S401、第一终端获取第一APP的测试信息,并向第二终端发送测试信息;测试信息包括第一APP的安装包、以及第一APP的至少一个第一功能对应的触发指令。
需要说明的是,S401的详细过程,可以参见上述S201的具体描述,本申请实施例这里不予赘述。
S402、第二终端接收测试信息。
S403、第二终端利用第一APP的安装包安装第一APP,并响应于触发指令,运行至少一个第一功能,生成至少一个第一功能对应的至少一个日志文件。
其中,日志文件用于记录第二终端的堆内存的使用情况。
第二终端响应于触发指令,运行第一APP的至少一个第一功能;第二终端通过用于检测内存泄漏的SDK,生成至少一个第一功能对应的至少一个日志文件。
S404、第二终端向第一终端发送至少一个日志文件。
S405、第一终端接收至少一个日志文件,并分析至少一个日志文件,确定运行至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息,以确定出第二终端运行至少一个第一功能的过程中发生内存泄漏的位置。
需要说明的是,S405的详细过程,可以参见上述S203的具体描述,本申请实施例这里不予赘述。
本申请实施例中,第一终端包括显示模块。第一终端预设有上述UI自动化框架,预先安装有上述CLI工具。第一终端预先保存有上述第一APP的安装包和上述预设脚本。第一终端通过显示模块展示前端界面,前端界面上显示该第一APP的安装包、预设脚本、以及名称为“构建”的开始选项。第一终端检测到开发人员点击“构建”,通过UI自动化框架可以先将该第一APP的安装包发送至第二终端。第二终端利用该第一APP的安装包,安装集成有用于检测内存泄漏的SDK的第一APP。再通过UI自动化框架执行预设脚本,向第二终端发送至少一个第一功能对应的触发指令。第一终端接收第二终端发送的至少一个第一功能对应的至少一个日志文件,并通过UI自动化框架控制CLI工具分析该日志文件,确定运行至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息。然后,通过UI自动化框架,将所有发生内存泄漏的页面信息、所有发生内存泄漏的对象信息、以及上述测试基础信息,保存至服务器;还可以在前端界面上显示所有发生内存泄漏的页面信息、所有发生内存泄漏的对象信息和上述测试基础信息。
示例性地,如图5所示的前端界面,前端界面50上分别显示有第一APP的版本信息、第二终端的设备信息、至少一个第一功能对应的至少一个hprof文件、每个hprof文件对应的分析文件和内存泄漏信息、功能复现信息。其中,第一APP的版本信息可以包括APP名称和APP的版本号码。第二终端的设备信息可以包括第二终端的设备名称。内存泄漏信息包括发生内存泄漏的页面信息和发生内存泄漏的对象信息。发生内存泄漏的页面信息包括页面名称和页面代码名称。功能复现信息记录有第二终端运行至少一个第一功能的操作过程。
从图5中可以看到,前端界面50上显示如下内容:第一APP的版本号码为“release/RB_6.11.3”;第二终端的设备信息为“TPE9X”;多个页面名称包括:多段视频导入预裁剪页、发布页和拍摄页相册入口打开的相册页;与多个页面名称一一对应的多个页面代码名称包括:MixmporterActivity、ShareActivity、RecordAblumActivity;查看内存泄漏信息的选项;查看分析文件的选项;获取hprof文件的选项;查看功能复现信息的选项。
可以理解的是,上述方法可以由内存泄漏检测装置实现。内存泄漏检测装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
本申请实施例可以根据上述方法示例对上述内存泄漏检测装置等进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图6示出了上述实施例中所涉及的内存泄漏检测装置一种可能的结构示意图,内存泄漏检测装置600包括:文件获取模块601和文件分析模块602。其中,文件获取模块601,用于获取第一应用程序APP的测试信息,并向第二终端发送测试信息;接收第一APP的至少一个第一功能对应的至少一个日志文件;文件分析模块602,用于分析至少一个日志文件,确定运行至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息,以确定出第二终端运行至少一个第一功能的过程中发生内存泄漏的位置。其中,测试信息包括至少一个第一功能对应的触发指令;至少一个日志文件为第二终端利用测试信息生成的,至少一个日志文件用于记录第二终端运行至少一个第一功能的过程中堆内存的使用情况;至少一个日志文件和至少一个第一功能一一对应。
在一种可能的实施方式中,测试信息还包括第一APP的安装包。其中,第一APP的安装包具有在第二终端上构建内存泄漏检测所需的测试环境、以及控制第二终端生成至少一个日志文件,并向内存泄漏检测装置600发送至少一个日志文件的能力。
另一种可能的实施方式中,文件分析模块602,具体用于将至少一个日志文件转换为至少一个分析文件,并从至少一个分析文件中,确定发生内存泄漏的页面信息和发生内存泄漏的对象信息。其中,每个分析文件包括与所占用的堆内存未被释放的页面或所占用的堆内存未被释放的对象相关的引用路径。
另一种可能的实施方式中,内存泄漏检测装置600还包括:测试报告获取模块603和显示模块604。其中,测试报告获取模块,用于在上述分析至少一个日志文件,确定运行至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息之后,获取测试基础信息;向服务器发送测试基础信息、至少一个日志文件、发生内存泄漏的页面信息和发生内存泄漏的对象信息;接收测试报告;显示模块,用于显示测试报告。
其中,测试基础信息包括以下至少一项:第二终端的设备标识、第一APP的版本信息、至少一个第一功能各自对应的场景信息。测试报告表征测试基础信息、至少一个日志文件、发生内存泄漏的页面信息和发生内存泄漏的对象信息之间的映射关系。
在采用集成的单元的情况下,图7示出了上述实施例中所涉及的终端700的一种可能的结构示意图,终端700是第一终端。终端700可以包括:处理器701、存储器702和通信模块703。处理器701用于对终端700的动作进行控制管理。存储器702,用于保存终端700的程序代码和数据,如内存泄漏检测方法,预设脚本等。通信模块703用于支持终端700与其他网络实体的通信,以实现数据交互等功能,如该通信模块703支持终端700与第二终端的通信,以实现数据交互功能。
其中,处理器701可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器701可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
存储器702可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器702还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器702中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器701所执行以实现本申请实施例提供的内存泄漏检测方法。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当计算机指令在上述终端(即第一终端)上运行时,使得该终端(即第一终端)执行上述方法实施例中的各个功能或者步骤。例如,该计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
本申请实施例还提供一种计算机程序产品,当计算机程序产品在上述终端(即第一终端)上运行时,使得该终端(即第一终端)执行上述方法实施例中的各个功能或者步骤。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种内存泄漏检测方法,其特征在于,应用于第一终端,所述方法包括:
获取第一应用程序APP的测试信息,并向第二终端发送所述测试信息;所述测试信息包括所述第一APP的至少一个第一功能对应的触发指令;
接收所述至少一个第一功能对应的至少一个日志文件;其中,所述至少一个日志文件为所述第二终端利用所述测试信息生成的,所述至少一个日志文件用于记录所述第二终端运行所述至少一个第一功能的过程中堆内存的使用情况;所述至少一个日志文件和所述至少一个第一功能一一对应;
分析所述至少一个日志文件,确定运行所述至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息,以确定出所述第二终端运行所述至少一个第一功能的过程中发生内存泄漏的位置。
2.根据权利要求1所述的方法,其特征在于,所述测试信息还包括所述第一APP的安装包;
其中,所述第一APP的安装包用于在所述第二终端上构建内存泄漏检测所需的测试环境、以及控制所述第二终端生成所述至少一个日志文件,并向所述第一终端发送所述至少一个日志文件。
3.根据权利要求1或2所述的方法,其特征在于,所述分析所述至少一个日志文件,确定运行所述至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息,包括:
将所述至少一个日志文件转换为至少一个分析文件,并从所述至少一个分析文件中,确定所述发生内存泄漏的页面信息和所述发生内存泄漏的对象信息;
其中,每个所述分析文件包括以下至少一项:与所占用的堆内存未被释放的页面相关的引用路径,与所占用的堆内存未被释放的对象相关的引用路径。
4.根据权利要求1或2所述的方法,其特征在于,在所述分析所述至少一个日志文件,确定运行所述至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息之后,所述方法还包括:
获取测试基础信息;其中,所述测试基础信息包括以下至少一项:所述第二终端的设备标识、所述第一APP的版本信息、所述至少一个第一功能各自对应的场景信息;
向服务器发送所述测试基础信息、所述至少一个日志文件、所述发生内存泄漏的页面信息和所述发生内存泄漏的对象信息;
接收测试报告,并显示所述测试报告;所述测试报告表征所述测试基础信息、所述至少一个日志文件、所述发生内存泄漏的页面信息和所述发生内存泄漏的对象信息之间的映射关系。
5.一种内存泄漏检测装置,其特征在于,所述装置包括:
文件获取模块,用于获取第一应用程序APP的测试信息,并向第二终端发送所述测试信息;接收所述第一APP的至少一个第一功能对应的至少一个日志文件;其中,所述测试信息包括所述至少一个第一功能对应的触发指令;所述至少一个日志文件为所述第二终端利用所述测试信息生成的,所述至少一个日志文件用于记录所述第二终端运行所述至少一个第一功能的过程中堆内存的使用情况;所述至少一个日志文件和所述至少一个第一功能一一对应;
文件分析模块,用于分析所述至少一个日志文件,确定运行所述至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息,以确定出所述第二终端运行所述至少一个第一功能的过程中发生内存泄漏的位置。
6.根据权利要求5所述的装置,其特征在于,所述测试信息还包括所述第一APP的安装包;
其中,所述第一APP的安装包具有在所述第二终端上构建内存泄漏检测所需的测试环境、以及控制所述第二终端生成所述至少一个日志文件,并向所述装置发送所述至少一个日志文件的能力。
7.根据权利要求5或6所述的装置,其特征在于,
所述文件分析模块,具体用于将所述至少一个日志文件转换为至少一个分析文件,并从所述至少一个分析文件中,确定所述发生内存泄漏的页面信息和所述发生内存泄漏的对象信息;
其中,每个所述分析文件包括与所占用的堆内存未被释放的页面或所占用的堆内存未被释放的对象相关的引用路径。
8.根据权利要求5或6所述的装置,其特征在于,所述装置还包括:测试报告获取模块和显示模块;
其中,测试报告获取模块,用于在所述分析所述至少一个日志文件,确定运行所述至少一个第一功能的过程中发生内存泄漏的页面信息以及发生内存泄漏的对象信息之后,获取测试基础信息;向服务器发送所述测试基础信息、所述至少一个日志文件、所述发生内存泄漏的页面信息和所述发生内存泄漏的对象信息;接收测试报告;
所述显示模块,用于显示所述测试报告;
其中,所述测试基础信息包括以下至少一项:所述第二终端的设备标识、所述第一APP的版本信息、所述至少一个第一功能各自对应的场景信息;所述测试报告表征所述测试基础信息、所述至少一个日志文件、所述发生内存泄漏的页面信息和所述发生内存泄漏的对象信息之间的映射关系。
9.一种终端,其特征在于,所述终端是第一终端,所述终端包括:处理器和用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,使得所述终端执行如权利要求1-4中任一项所述的内存泄漏检测方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,当所述计算机指令在终端上运行时,使得所述终端执行如权利要求1-4中任一项所述的内存泄漏检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010899911.8A CN111984541A (zh) | 2020-08-31 | 2020-08-31 | 一种内存泄漏检测方法及装置、终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010899911.8A CN111984541A (zh) | 2020-08-31 | 2020-08-31 | 一种内存泄漏检测方法及装置、终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111984541A true CN111984541A (zh) | 2020-11-24 |
Family
ID=73447106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010899911.8A Pending CN111984541A (zh) | 2020-08-31 | 2020-08-31 | 一种内存泄漏检测方法及装置、终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984541A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434364A (zh) * | 2021-06-25 | 2021-09-24 | 青岛海尔科技有限公司 | 屏端设备内存检测方法、装置、存储介质及电子装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101539870A (zh) * | 2008-03-21 | 2009-09-23 | 中兴通讯股份有限公司 | 内存泄漏检测装置及方法 |
CN105373479A (zh) * | 2015-12-14 | 2016-03-02 | 厦门美图移动科技有限公司 | 一种内存泄露的自动化测试方法、装置及移动终端 |
CN106227650A (zh) * | 2016-07-08 | 2016-12-14 | 北京奇虎科技有限公司 | 一种检测应用的内存泄漏的方法和装置 |
CN107957941A (zh) * | 2016-10-17 | 2018-04-24 | 腾讯科技(深圳)有限公司 | 移动终端内存泄漏处理方法和装置 |
CN108664390A (zh) * | 2017-03-31 | 2018-10-16 | 华为技术有限公司 | 一种内存泄露检测方法及设备 |
CN109491897A (zh) * | 2018-10-26 | 2019-03-19 | 成都安恒信息技术有限公司 | 一种基于趋势分析的系统资源泄漏测试方法 |
CN110704217A (zh) * | 2019-08-27 | 2020-01-17 | 努比亚技术有限公司 | 一种内存泄露检测方法、终端及计算机可读存储介质 |
CN111143100A (zh) * | 2019-12-09 | 2020-05-12 | 北京小米移动软件有限公司 | 内存泄露检测方法、装置、设备及存储介质 |
-
2020
- 2020-08-31 CN CN202010899911.8A patent/CN111984541A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101539870A (zh) * | 2008-03-21 | 2009-09-23 | 中兴通讯股份有限公司 | 内存泄漏检测装置及方法 |
CN105373479A (zh) * | 2015-12-14 | 2016-03-02 | 厦门美图移动科技有限公司 | 一种内存泄露的自动化测试方法、装置及移动终端 |
CN106227650A (zh) * | 2016-07-08 | 2016-12-14 | 北京奇虎科技有限公司 | 一种检测应用的内存泄漏的方法和装置 |
CN107957941A (zh) * | 2016-10-17 | 2018-04-24 | 腾讯科技(深圳)有限公司 | 移动终端内存泄漏处理方法和装置 |
CN108664390A (zh) * | 2017-03-31 | 2018-10-16 | 华为技术有限公司 | 一种内存泄露检测方法及设备 |
CN109491897A (zh) * | 2018-10-26 | 2019-03-19 | 成都安恒信息技术有限公司 | 一种基于趋势分析的系统资源泄漏测试方法 |
CN110704217A (zh) * | 2019-08-27 | 2020-01-17 | 努比亚技术有限公司 | 一种内存泄露检测方法、终端及计算机可读存储介质 |
CN111143100A (zh) * | 2019-12-09 | 2020-05-12 | 北京小米移动软件有限公司 | 内存泄露检测方法、装置、设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434364A (zh) * | 2021-06-25 | 2021-09-24 | 青岛海尔科技有限公司 | 屏端设备内存检测方法、装置、存储介质及电子装置 |
CN113434364B (zh) * | 2021-06-25 | 2024-03-22 | 青岛海尔科技有限公司 | 屏端设备内存检测方法、装置、存储介质及电子装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9495543B2 (en) | Method and apparatus providing privacy benchmarking for mobile application development | |
CN107957941B (zh) | 移动终端内存泄漏处理方法和装置 | |
US8797338B2 (en) | Platform agnostic screen capture tool | |
US10474479B1 (en) | Preventing framework conflicts for multi-OS applications | |
CN109873735B (zh) | H5页面的性能测试方法、装置和计算机设备 | |
US9733930B2 (en) | Logical level difference detection between software revisions | |
CN109218393B (zh) | 一种推送的实现方法、装置、设备和计算机存储介质 | |
CN109831351B (zh) | 链路跟踪方法、装置、终端及存储介质 | |
CN109765577B (zh) | Gnss接收机的自检方法、装置、设备及存储介质 | |
US10353700B1 (en) | Code base sharing between standalone and web-based versions of an application via an emulated network communication channel | |
CN111984541A (zh) | 一种内存泄漏检测方法及装置、终端 | |
CN116627850B (zh) | 函数调试方法、装置、存储介质以及电子设备 | |
CN113032224A (zh) | 一种信息采集方法、装置、电子设备及可读存储介质 | |
CN111638952A (zh) | 一种内存转储方法、装置及电子设备 | |
CN116775202A (zh) | 模糊测试方法、装置、介质、电子设备及计算机程序产品 | |
CN116450473A (zh) | 踩内存问题的定位方法和电子设备 | |
CN115248772A (zh) | 软件中间件的接口测试方法和装置 | |
CN113760631A (zh) | 页面加载时长确定方法、装置、设备和存储介质 | |
CN109358972B (zh) | 中间件客户端的日志管理方法、装置及计算机系统 | |
CN113268221A (zh) | 文件匹配方法、装置、存储介质及计算机设备 | |
CN112506782A (zh) | 一种应用程序的测试方法、装置、设备及存储介质 | |
KR100751063B1 (ko) | 임베디드 시스템의 프로그램 개발을 위한 pc 기반의에뮬레이션 제공 방법 및 장치 | |
CN114385384B (zh) | 一种应用编程接口调用方法及相关设备 | |
CN113778773B (zh) | Sim卡模拟方法、装置和电子设备 | |
CN112534409A (zh) | 电子设备及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |