CN112241366A - 嵌入式设备测试方法、装置及电子设备 - Google Patents
嵌入式设备测试方法、装置及电子设备 Download PDFInfo
- Publication number
- CN112241366A CN112241366A CN202011012214.2A CN202011012214A CN112241366A CN 112241366 A CN112241366 A CN 112241366A CN 202011012214 A CN202011012214 A CN 202011012214A CN 112241366 A CN112241366 A CN 112241366A
- Authority
- CN
- China
- Prior art keywords
- function
- target program
- memory
- memory allocation
- call data
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 71
- 230000006870 function Effects 0.000 claims abstract description 130
- 238000000034 method Methods 0.000 claims abstract description 44
- 238000003780 insertion Methods 0.000 claims abstract description 8
- 230000037431 insertion Effects 0.000 claims abstract description 8
- 238000004590 computer program Methods 0.000 claims description 9
- 238000004458 analytical method Methods 0.000 abstract description 12
- 238000010586 diagram Methods 0.000 description 7
- 238000003745 diagnosis Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种嵌入式设备测试方法、装置及电子设备,对目标程序进行插桩;获取插桩后的目标程序运行过程中内存分配与函数调用数据;将内存分配与函数调用数据通过网络发送至服务器,以使所述服务器根据所述内存分配与函数调用数据分析目标程序的内存泄露情况。使用本发明的嵌入式设备测试方法,相较于现有技术,进行嵌入式设备内存泄露测试时,无需在嵌入式设备上保存大量内存分配与函数调用数据,同时也不需要调用嵌入式设备的CPU资源进行内存泄露分析,降低了嵌入式设备的内存消耗和CPU消耗。
Description
技术领域
本发明涉及嵌入式设备测试技术领域,特别涉及一种嵌入式设备测试方法、装置及电子设备。
背景技术
随着现代通讯技术的不断发展,通讯设备对系统实时性、硬件集成度的要求越来越高。嵌入式系统因此在通讯系统中被广泛应用,例如嵌入式设备被应用于基于IP的语音传输(英语:Voice over Internet Protocol,缩写为VoIP)技术中。
由于通讯设备对软件质量的要求往往很高,如何保证嵌入式系统软件质量是通讯系统软件项目中重点需要考虑的问题。其中,在嵌入式设备上使用C或者C++编写程序,难以避免地会出现内存泄漏的问题,解决内存泄漏问题的关键是要记录下代码中的内存分配和函数调用过程用于分析。
为了记录下用于分析嵌入式设备内存泄露问题的数据,相关技术中提供了两种技术方案:第一种是使用unwind库进行栈回溯记录函数调用过程;第二种是在设备自身的内存中保存内存分配与函数调用等诊断数据。
以上的相关技术存在以下不足:第一种技术方案中,unwind栈回溯比较消耗CPU性能,嵌入式设备一般CPU比较弱,容易卡住;第二种技术方案中,由于嵌入式设备内存比较小,保存诊断数据会增加设备额外的内存消耗。
发明内容
本发明的目的在于至少解决现有技术中存在的技术问题之一,提供一种嵌入式设备测试方法、装置及电子设备,解决现有技术中在记录用于分析嵌入式设备内存泄露问题的数据时,造成的对嵌入式设备内存和CPU资源消耗较大的技术问题。
第一方面,本发明提供一种嵌入式设备测试方法,所述方法包括:
对目标程序进行插桩;
获取插桩后的目标程序运行过程中内存分配与函数调用数据;
将内存分配与函数调用数据通过网络发送至服务器,以使所述服务器根据所述内存分配与函数调用数据分析目标程序的内存泄露情况。
本发明第一方面的一个实施例中,所述对目标程序进行插桩,包括:
在编译期对目标程序的源代码进行插桩,将插桩函数的代码插入到目标程序的每个函数进入和退出的位置。
本发明第一方面的一个实施例中,所述获取插桩后的目标程序运行过程中内存分配与函数调用数据,包括:
利用插桩函数将上层函数的地址记录到线程本地存储中,根据所述上层函数的地址生成所述内存分配与函数调用数据。
本发明第一方面的一个实施例中,所述将内存分配与函数调用数据通过网络发送至服务器,包括:
利用插桩函数将所述内存分配与函数调用数据通过网络协议发送给指定的服务器端口。
本发明第一方面的一个实施例中,所述网络协议包括UDP协议。
第二方面,本发明提供一种嵌入式设备测试装置,所述装置包括:
插桩模块,用于对目标程序进行插桩;
数据获取模块,用于获取插桩后的目标程序运行过程中内存分配与函数调用数据;
数据发送模块,用于将内存分配与函数调用数据通过网络发送至服务器,以使所述服务器根据所述内存分配与函数调用数据分析目标程序的内存泄露情况。
本发明第二方面的一个实施例中,所述插桩模块还用于:
在编译期对目标程序的源代码进行插桩,将插桩函数的代码插入到目标程序的每个函数进入和退出的位置。
本发明第二方面的一个实施例中,所述数据获取模块还用于:
利用插桩函数将上层函数的地址记录到线程本地存储中,根据所述上层函数的地址生成所述内存分配与函数调用数据。
本发明第二方面的一个实施例中,所述数据发送模块还用于:
利用插桩函数将所述内存分配与函数调用数据通过网络协议发送给指定的服务器端口,所述网络协议包括UDP协议。
第三方面,本发明实施例提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明第一方面实施例中任一项所述的嵌入式设备测试方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机的处理器执行如本发明第一方面实施例中任一项所述的嵌入式设备测试方法。
有益效果:上述的嵌入式设备测试方法、装置及电子设备,对目标程序进行插桩;获取插桩后的目标程序运行过程中内存分配与函数调用数据;将内存分配与函数调用数据通过网络发送至服务器,以使所述服务器根据所述内存分配与函数调用数据分析目标程序的内存泄露情况。本发明通过在编译目标程序代码的过程中进行代码插桩,目标程序运行于嵌入式设备上,使用编译选项在函数调用进出和退出的地方插入代码,并将利用插桩函数搜集目标程序的内存分配和函数调用信息,最后将目标程序的内存分配和函数调用信息通过UDP协议发送给服务器,由服务器根据目标程序的内存分配和函数调用信息对嵌入式设备上的目标程序的内存泄露情况进行测试、分析、并将分析结果在服务器上呈现给测试人员。使用本发明的嵌入式设备测试方法,相较于现有技术,进行嵌入式设备内存泄露测试时,无需在嵌入式设备上保存大量内存分配与函数调用数据,同时也不需要调用嵌入式设备的CPU资源进行内存泄露分析,降低了嵌入式设备的内存消耗和CPU消耗。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
下面结合附图和实施例对本发明进一步地说明;
图1为一个实施例中嵌入式设备测试方法的应用环境图。
图2为其中一个实施例中嵌入式设备测试方法的流程示意图。
图3为其一个实施例中嵌入式设备测试装置的结构框图。
图4为其中一个实施例中嵌入式设备测试系统运行的流程示意图。
图5为其中一个实施例中嵌入式设备测试系统的原理图。
图6为一个实施例中计算机设备的结构框图。
具体实施方式
本部分将详细描述本发明的具体实施例,本发明之较佳实施例在附图中示出,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本发明的每个技术特征和整体技术方案,但其不能理解为对本发明保护范围的限制。
图1为一个实施例中嵌入式设备测试方法的应用环境图。参照图1,该嵌入式设备测试方法应用于嵌入式设备测试系统。该嵌入式设备测试系统包括嵌入式设备110和服务器120。嵌入式设备110和服务器120通过网络连接。嵌入式设备110具体可以是以ARM或者PowerPC为处理器的嵌入式设备。服务器120可以用独立的服务器120或者是多个服务器120组成的服务器120集群来实现。
下面,将通过几个具体的实施例对本发明实施例提供的嵌入式设备测试方法进行详细介绍和说明。
如图2所示,在一个实施例中,提供了一种嵌入式设备测试方法。本实施例主要以该方法应用于计算机设备来举例说明。该计算机设备具体可以是上述图1中的嵌入式设备110或服务器120。
参照图2,该嵌入式设备测试方法具体包括步骤S100、步骤S200和步骤S300。
步骤S100,对目标程序进行插桩。
其中,目标程序是测试用例。嵌入式设备的软件测试过程一般为构造测试用例,代入程序进行测试,将输出结果与预想值比对,修改程序中的问题,如此反复进行。
需要说明的是,本实施例中,所述对目标程序进行插桩,包括:在编译期对目标程序的源代码进行插桩,将插桩函数的代码插入到目标程序的每个函数进入和退出的位置。
程序插桩一般是指通过分析程序,并在程序的代码中插入另外一些代码,而这些插入的代码并不影响源程序本身的执行逻辑,然后编译运行,通过运行插入后的一些代码能够得到程序运行过程中的一些相关信息。它一般是用来监视或评测源程序的性能水平、诊断源程序的错误、记录源程序执行相关日志等,例如记录代码覆盖率、检测运行时内存使用情况、监测程序性能瓶颈、或者获取其他相关信息等。
一般来说使用插桩技术的主要功能如下:
代码跟踪,仅仅通过执行代码可能不能显现出想要的内容,可以通过插桩技术在代码某些位置插桩用来获取应用程序运行时的信息;调试,在某些应用程序运行的时候,可能并不会输出什么内容,这样并不便于发现程序中错误和进行调试,插入代码可跟踪程序执行的相关内容,便于发现和记录错误,并有利于调试;性能监测,为了得到应用程序的性能相关信息,只有在代码中插入相应桩函数记录程序运行时的相应信息;日志,通过桩函数记录程序运行的信息。
一般而言,根据被插桩程序的形式,插桩可被分为源代码插桩和二进制插桩,源代码插桩指的是直接分析源程序以确定插桩的地点和插桩的内容,例如C/C++源程序,在源程序中插入代码,然后再编译得到可执行文件;而二进制插桩指的是直接分析程序的二进制代码也就是可执行文件,然后直接在二进制代码中插桩得到新的可执行文件。这两种方式得到的结果都是一样的,只是分析的代码形式不一样但功能等价。这两种不同的插桩方式各有优缺点,由于不同平台的二进制代码可能会存在一定的区别,所以二进制插桩工具一般只针对特定的平台,但是源码插桩就不存在这个问题了,并且由于二进制代码中语法、语义等信息并不齐全,而插桩程序则需要分析这些东西,所以对二进制代码的分析和插桩是比较困难的。但对二进制代码的格式主要与操作系统和运行平台相关,而与编程语言的关系不大,所以对二进制代码插桩具有更广泛的应用,可能只需要一个插桩程序就能对不同编程语言的二进制代码进行分析并插桩,而对源代码的插桩则不一样,不同的编程语言并不能共用同一个插桩程序,但是源代码中包含的语法语义等信息则是比较直观的比较有利于插桩程序进行词法语法等分析保证对源代码的插桩能达到很高的准确性和针对性。
步骤S200,获取插桩后的目标程序运行过程中内存分配与函数调用数据。
需要说明的是,所述获取插桩后的目标程序运行过程中内存分配与函数调用数据,包括:利用插桩函数将上层函数的地址记录到线程本地存储中,根据所述上层函数的地址生成所述内存分配与函数调用数据。
插桩函数,也叫作桩函数。例如,产品函数或测试函数调用了一个未编写的函数,可以编写桩函数来代替该被调用的函数,桩代码也用于实现测试隔离。采用由底向上的方式进行开发,底层的代码先开发并先测试,可以避免编写桩代码,这样做的好处有:减少了工作量;测试上层函数时,也是对下层函数的间接测试;当下层函数修改时,通过回调函数可以确认修改是否导致上层函数产生错误。
步骤S300,将内存分配与函数调用数据通过网络发送至服务器,以使所述服务器根据所述内存分配与函数调用数据分析目标程序的内存泄露情况。
需要说明的是,所述将内存分配与函数调用数据通过网络发送至服务器,包括:利用插桩函数将所述内存分配与函数调用数据通过网络协议发送给指定的服务器端口,所述网络协议包括UDP协议。
本实施例通过在编译目标程序代码的过程中进行代码插桩,目标程序运行于嵌入式设备上,使用编译选项在函数调用进出和退出的地方插入代码,并将利用插桩函数搜集目标程序的内存分配和函数调用信息,最后将目标程序的内存分配和函数调用信息通过UDP协议发送给服务器,由服务器根据目标程序的内存分配和函数调用信息对嵌入式设备上的目标程序的内存泄露情况进行测试、分析、并将分析结果在服务器上呈现给测试人员。使用本发明的嵌入式设备测试方法,相较于现有技术,进行嵌入式设备内存泄露测试时,无需在嵌入式设备上保存大量内存分配与函数调用数据,同时也不需要调用嵌入式设备的CPU资源进行内存泄露分析,降低了嵌入式设备的内存消耗和CPU消耗。
如图4所示,为了便于本领域技术人员理解本发明的嵌入式设备测试系统,以下提供一个具体的实施例进行说明:
步骤S410,编写插桩函数,编写代码实现插桩函数__cyg_profile_func_enter,在插桩函数中将上层函数的地址记录到线程本地存储中,拦截libc的内存分配函数,将线程本地存储中保存的地址通过udp发送给指定的服务端口。
步骤S420,编译期代码插桩,gcc/clang编译器开启-finstrument-functions编译选项,把步骤S410中实现的插桩函数的代码插入到每个函数进入和退出的地方。
步骤S430,运行目标程序,在嵌入式设备A上运行目标程序,通过命令控制程序开始搜集内存分配和函数调用信息。
步骤S440,开启诊断服务,在位于同一局域网的服务端设备B上启动内存泄漏诊断服务程序,在指定的udp端口上接收从嵌入式设备发送过来的内存分配与函数调用数据。
步骤S450,生成分析报告,内存泄漏诊断服务程序负责将函数地址转换到具体的代码行,并统计内存分配次数,分配内存大小,经过计算和排序之后,生成统计报告用于开发人员分析。
如图5所示,以下对本实施例的原理进行简要说明:
本发明实施例的原理是在嵌入式设备上运行插桩过的目标程序app.exe,通过udp网络将搜集到内存诊断数据发给服务端设备上运行的诊断服务程序mem_server.exe进行分析并生成报告。通过插桩函数实现了内存分配函数的调用过程的记录,节省了unwind栈回溯带来的cpu消耗,通过udp网络将诊断信息发送出去,避免了在嵌入式设备端的内存消耗。
如图3所示,在一个实施例中,提供了一种嵌入式设备测试装置。参照图6,该嵌入式设备测试装置包括:插桩模块111、数据获取模块112和数据发送模块113。
插桩模块111,用于对目标程序进行插桩;
数据获取模块112,用于获取插桩后的目标程序运行过程中内存分配与函数调用数据;
数据发送模块113,用于将内存分配与函数调用数据通过网络发送至服务器,以使所述服务器根据所述内存分配与函数调用数据分析目标程序的内存泄露情况。
在一个实施例中,所述插桩模块111还用于:在编译期对目标程序的源代码进行插桩,将插桩函数的代码插入到目标程序的每个函数进入和退出的位置。
在一个实施例中,所述数据获取模块112还用于:利用插桩函数将上层函数的地址记录到线程本地存储中,根据所述上层函数的地址生成所述内存分配与函数调用数据。
在一个实施例中,所述数据发送模块113还用于:利用插桩函数将所述内存分配与函数调用数据通过网络协议发送给指定的服务器端口,所述网络协议包括UDP协议。
具体地,本发明实施例所述一种嵌入式设备测试装置与方法实施例均基于相同发明构思。详情请参见方法实施例,在此不再赘述。
上述嵌入式设备测试装置,通过在编译目标程序代码的过程中进行代码插桩,目标程序运行于嵌入式设备上,使用编译选项在函数调用进出和退出的地方插入代码,并将利用插桩函数搜集目标程序的内存分配和函数调用信息,最后将目标程序的内存分配和函数调用信息通过UDP协议发送给服务器,由服务器根据目标程序的内存分配和函数调用信息对嵌入式设备上的目标程序的内存泄露情况进行测试、分析、并将分析结果在服务器上呈现给测试人员。使用本发明的嵌入式设备测试方法,相较于现有技术,进行嵌入式设备内存泄露测试时,无需在嵌入式设备上保存大量内存分配与函数调用数据,同时也不需要调用嵌入式设备的CPU资源进行内存泄露分析,降低了嵌入式设备的内存消耗和CPU消耗。
图6示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的嵌入式设备110(或服务器120)。如图6所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现嵌入式设备测试方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行嵌入式设备测试方法。本领域技术人员可以理解,图6中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的嵌入式设备测试装置可以实现为一种计算机程序的形式,计算机程序可在如图6所示的计算机设备上运行。计算机设备的存储器中可存储组成该嵌入式设备测试装置的各个程序模块,比如,图3所示的数据插桩模块111、数据获取模块112和数据发送模块113。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的嵌入式设备测试方法中的步骤。
例如,图6所示的计算机设备可以通过如图6所示的嵌入式设备测试装置中的插桩模块111执行对目标程序进行插桩的步骤,数据获取模块112执行获取插桩后的目标程序运行过程中内存分配与函数调用数据的步骤,数据发送模块113执行将内存分配与函数调用数据通过网络发送至服务器,以使所述服务器根据所述内存分配与函数调用数据分析目标程序的内存泄露情况的步骤。
在一个实施例中,提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时执行上述嵌入式设备测试方法的步骤。此处嵌入式设备测试方法的步骤可以是上述各个实施例的嵌入式设备测试方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述嵌入式设备测试方法的步骤。此处嵌入式设备测试方法的步骤可以是上述各个实施例的嵌入式设备测试方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRA)、存储器总线(Rambus)直接RAM(RDRA)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
Claims (10)
1.一种嵌入式设备测试方法,其特征在于,所述方法包括:
对目标程序进行插桩;
获取插桩后的目标程序运行过程中内存分配与函数调用数据;
将内存分配与函数调用数据通过网络发送至服务器,以使所述服务器根据所述内存分配与函数调用数据分析目标程序的内存泄露情况。
2.根据权利要求1所述的一种嵌入式设备测试方法,其特征在于,所述对目标程序进行插桩,包括:
在编译期对目标程序的源代码进行插桩,将插桩函数的代码插入到目标程序的每个函数进入和退出的位置。
3.根据权利要求2所述的一种嵌入式设备测试方法,其特征在于,所述获取插桩后的目标程序运行过程中内存分配与函数调用数据,包括:
利用插桩函数将上层函数的地址记录到线程本地存储中,根据所述上层函数的地址生成所述内存分配与函数调用数据。
4.根据权利要求3所述的一种嵌入式设备测试方法,其特征在于,所述将内存分配与函数调用数据通过网络发送至服务器,包括:
利用插桩函数将所述内存分配与函数调用数据通过网络协议发送给指定的服务器端口。
5.根据权利要求4所述的一种嵌入式设备测试方法,其特征在于,所述网络协议包括UDP协议。
6.一种嵌入式设备测试装置,其特征在于,所述装置包括:
插桩模块,用于对目标程序进行插桩;
数据获取模块,用于获取插桩后的目标程序运行过程中内存分配与函数调用数据;
数据发送模块,用于将内存分配与函数调用数据通过网络发送至服务器,以使所述服务器根据所述内存分配与函数调用数据分析目标程序的内存泄露情况。
7.如权利要求6所述的嵌入式设备测试装置,其特征在于,所述插桩模块还用于:
在编译期对目标程序的源代码进行插桩,将插桩函数的代码插入到目标程序的每个函数进入和退出的位置。
8.如权利要求7所述的嵌入式设备测试装置,其特征在于,所述数据获取模块还用于:
利用插桩函数将上层函数的地址记录到线程本地存储中,根据所述上层函数的地址生成所述内存分配与函数调用数据。
9.如权利要求8所述的嵌入式设备测试装置,其特征在于,所述数据发送模块还用于:
利用插桩函数将所述内存分配与函数调用数据通过网络协议发送给指定的服务器端口,所述网络协议包括UDP协议。
10.一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5中任一项所述的嵌入式设备测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011012214.2A CN112241366A (zh) | 2020-09-23 | 2020-09-23 | 嵌入式设备测试方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011012214.2A CN112241366A (zh) | 2020-09-23 | 2020-09-23 | 嵌入式设备测试方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112241366A true CN112241366A (zh) | 2021-01-19 |
Family
ID=74171302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011012214.2A Pending CN112241366A (zh) | 2020-09-23 | 2020-09-23 | 嵌入式设备测试方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112241366A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113687942A (zh) * | 2021-07-16 | 2021-11-23 | 维沃移动通信有限公司 | 检测方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101408862A (zh) * | 2007-10-12 | 2009-04-15 | 李周 | 一种嵌入式系统测试方法 |
CN102222041A (zh) * | 2011-06-15 | 2011-10-19 | 深圳市运通信息技术有限公司 | 一种基于嵌入式软件的测试分析系统及方法 |
CN104252402A (zh) * | 2014-09-05 | 2014-12-31 | 深圳创维数字技术有限公司 | 一种程序调试方法及装置 |
CN106227672A (zh) * | 2016-08-10 | 2016-12-14 | 中车株洲电力机车研究所有限公司 | 一种嵌入式应用程序故障捕捉及处理方法 |
US20180137041A1 (en) * | 2016-11-15 | 2018-05-17 | Ca, Inc. | Incremental program construction from embedded program code for external testing |
-
2020
- 2020-09-23 CN CN202011012214.2A patent/CN112241366A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101408862A (zh) * | 2007-10-12 | 2009-04-15 | 李周 | 一种嵌入式系统测试方法 |
CN102222041A (zh) * | 2011-06-15 | 2011-10-19 | 深圳市运通信息技术有限公司 | 一种基于嵌入式软件的测试分析系统及方法 |
CN104252402A (zh) * | 2014-09-05 | 2014-12-31 | 深圳创维数字技术有限公司 | 一种程序调试方法及装置 |
CN106227672A (zh) * | 2016-08-10 | 2016-12-14 | 中车株洲电力机车研究所有限公司 | 一种嵌入式应用程序故障捕捉及处理方法 |
US20180137041A1 (en) * | 2016-11-15 | 2018-05-17 | Ca, Inc. | Incremental program construction from embedded program code for external testing |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113687942A (zh) * | 2021-07-16 | 2021-11-23 | 维沃移动通信有限公司 | 检测方法、装置及电子设备 |
CN113687942B (zh) * | 2021-07-16 | 2024-02-13 | 维沃移动通信有限公司 | 检测方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Song et al. | Performance diagnosis for inefficient loops | |
US7774761B2 (en) | Use of memory watch points and a debugger to improve analysis of runtime memory access errors | |
Arnold et al. | QVM: An efficient runtime for detecting defects in deployed systems | |
US20020138788A1 (en) | Computer software run-time analysis systems and methods | |
US20090070738A1 (en) | Integrating program construction | |
US9183114B2 (en) | Error detection on the stack | |
US20090248721A1 (en) | System And Method for Stack Crawl Testing and Caching | |
US7900198B2 (en) | Method and system for parameter profile compiling | |
US20120089966A1 (en) | Two pass automated application instrumentation | |
US20120036501A1 (en) | Method and System for Capturing System and User Events Using Hardware Trace Devices | |
US8533683B2 (en) | Stack walking enhancements using sensorpoints | |
US20100262954A1 (en) | Method for Locating Resource Leaks during Software Development | |
US20080127118A1 (en) | Method and system for dynamic patching of software | |
CN112241366A (zh) | 嵌入式设备测试方法、装置及电子设备 | |
US10216620B2 (en) | Static code testing of active code | |
Schuler et al. | Examining the energy impact of sorting algorithms on android: an empirical study | |
Sârbu et al. | Profiling the operational behavior of OS device drivers | |
Wu et al. | Casper: An efficient approach to call trace collection | |
US10229029B2 (en) | Embedded instruction sets for use in testing and error simulation of computing programs | |
Vanoverberghe et al. | State coverage: Software validation metrics beyond code coverage | |
CN108021495B (zh) | 基于回放的代码调试方法 | |
CN112612697A (zh) | 一种基于字节码技术的软件缺陷测试定位方法及系统 | |
CN110633199A (zh) | 用于支持智能合约的区块链的测试装置、方法及介质 | |
Elsner et al. | Challenges in regression test selection for end-to-end testing of microservice-based software systems | |
CN116795576A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210119 |