CN107506293B - 一种软件性能数据采集方法和装置 - Google Patents
一种软件性能数据采集方法和装置 Download PDFInfo
- Publication number
- CN107506293B CN107506293B CN201610416979.XA CN201610416979A CN107506293B CN 107506293 B CN107506293 B CN 107506293B CN 201610416979 A CN201610416979 A CN 201610416979A CN 107506293 B CN107506293 B CN 107506293B
- Authority
- CN
- China
- Prior art keywords
- code
- address
- software
- instruction
- measured
- 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.)
- Active
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/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (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
本发明公开了一种软件性能数据采集方法和装置,在获取了软件中的待测量代码的对应的机器码的地址后,可以在待测量代码的对应的机器码前后分别插入使能开关和结束开关控制性能统计功能的开启和结束,使能开关和结束开关的位置可以随着待测量代码的不同而不同,相对于现有技术中在软件固定位置写入统计代码,或者,在函数前后插入钩子函数的方式而言,本发明对软件本身没有任何修改,不会对软件性能产生不利影响,其次,本发明具有灵活性高的优点,可以对软件的任意位置的代码进行性能统计,提高性能数据统计的效率,即使在软件版本交付之后,采用本发明的方案依然可以对软件任意位置的代码进行性能统计。
Description
技术领域
本发明涉及嵌入式系统的软件领域,具体涉及一种软件性能数据采集方法和装置。
背景技术
对于实时嵌入式系统,需要采集软件性能数据来分析软件瓶颈,不断改进软件效率,以实现硬件效益最大化。软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。
软件性能的指标包括响应时间、系统响应时间和应用延迟时间、吞吐量、并发用户数、资源利用率等指标。为了对软件进行性能分析,确定软件的实际性能,以便对软件做出改进,需要对上述的性能指标进行统计。
现有技术中,为软件的性能统计提供了两种方案:
第一种方案:在应用软件中增加性能采集模块,采集模块具体的可以是一段采集代码。
第二种方案:利用编译器技术在应用软件函数的前后插入特殊钩子函数实现性能采集功能。
上述的第一种方案会对软件本身进行修改,增加性能统计代码,这无疑会影响软件性能。并且,将性能统计代码写入软件后,性能统计代码的位置就固定了,无法更改性能统计位置,当需要对软件中的另一些代码或其他性能进行统计时,需要再次修改软件才能实现。但是可以想到的是当软件版本对外交付后,这样的做法实现起来明显比较困难。
上述的第二种方案,也是对软件本身进行修改,在软件中的函数前后插入钩子函数,所以第二种方案只能按照函数进行性能统计,此方案也存在性能统计不够灵活的缺点,且采用此种方案,当软件版本对外交付之后,性能统计位置无法再更改。
发明内容
本发明实施例要解决的主要技术问题是,提供一种软件性能数据采集方法和装置,解决现有技术中对软件进行性能统计只能通过该在软件中新增统计代码或插入钩子函数实现带来的影响软件性能、统计方法不够灵活,无法对软件的任意片段的代码进行统性能计,以及软件交付后,性能统计位置不能更改的问题。
为解决上述技术问题,本发明实施例提供一种软件性能数据采集方法,包括:
确定软件中的待测量代码对应的机器码的地址;
在机器码的前后分别插入使能开关和结束开关;使能开关用于开启性能统计功能对待测量代码进行性能统计,结束开关用于关闭性能统计功能;
在软件的运行过程中,对待测量代码进行性能统计。
为解决上述技术问题,本发明实施例还提供一种软件性能数据采集装置,包括:
获取模块,用于确定软件中的待测量代码对应的机器码的地址;
配置模块,用于在机器码的前后分别插入使能开关和结束开关;使能开关用于开启性能统计功能对待测量代码进行性能统计,结束开关用于关闭性能统计功能;
统计模块,用于在软件的运行过程中,对待测量代码进行性能统计。
采用本发明的软件性能数据采集方法和装置,可以根据软件中的待测量代码对应的机器码的地址,在该机器码的前后分别插入能开启和关闭性能统计功能的使能开关和结束开关,在运行软件的过程中,当触发使能开关后,性能统计开始,对后续执行的待测量代码进行性能统计,当待测量代码对应的最后一个机器码执行完毕后,触发结束开关,关闭性能统计功能,实现了对测量代码的性能统计,本发明是通过在机器码一侧插入使能开关和结束开关实现待测量代码的性能统计,使能开关和结束开关的位置可以随着待测量代码的不同而不同,相对于现有技术中在软件固定位置写入统计代码或者,在函数前后插入钩子函数的方式而言,本发明对软件本身没有任何修改,不会对软件性能产生不利影响,其次,本发明的性能统计具有灵活性高的优点,可以对软件的任意位置的代码进行性能统计,即使在软件版本交付之后,采用本发明的方案可以对软件任意位置的代码进行性能统计。
附图说明
图1为本发明实施例一提供的一种软件性能数据采集方法的流程图;
图2为本发明实施例二提供的一种软件性能数据采集方法的流程图;
图3为本发明实施例三提供的一种软件性能数据采集装置的模块示意图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。
实施例一:
本实施例提出了一种软件性能数据采集方法,可以在不改变软件本身的情况下,对软件的任意位置的代码进行性能统计,具有较高的统计灵活性和较高的实用性,能满足更高的软件性能统计需要。参见图1,本实施例的软件性能数据采集方法包括:
S101、确定软件中的待测量代码对应的机器码的地址;
S102、在待测量代码对应的机器码的前后分别插入使能开关和结束开关;
其中,使能开关用于开启性能统计功能对待测量代码进行性能统计,结束开关用于关闭性能统计功能。
S103、在软件的运行过程中,对待测量代码进行性能统计。
具体的,本实施例中的软件包括但不限于应用软件。一般而言,每一个应用软件在运行时,在机器内部都会被翻译为对应的机器码,执行程序实际上就是将一条条的机器码依次传递给处理器进行处理。所以,每一个软件都有其对应的机器码,机器码一般存储在存储器中,对应的都有其地址。自然地,当测试人员在软件中选定一段代码作为待测量代码时,可以确定该待测量代码对应的机器码的地址,以便后续对待测量代码进行性能统计。
当确定待测量代码对应的机器码的地址后,S102中,可以根据该地址在该机器码的前后分别插入使能开关和结束开关。可以理解的是,这里的前后可以理解为使能开关和结束开关的地址相对于机器码的地址的前后。例如,先用结束开关替换在待测量代码对应的机器码的下一条机器,在软件运行的过程中,当待测量代码对应的机器码的前一条机器码执行后,立刻将该机器码替换为使能开关,并控制系统重新执行该使能开关,开启性能统计,当使能开关触发,待测量代码开始执行后,再将使能开关对应的地址中的机器码还原,软件执行过程中,当触发结束开关时,所有的待测量代码已经执行完毕,结束开关控制性能统计结束,即可得到本次的性能统计结果,在此方案中,使能开关和结束开关的地址分别位于待测量代码对应的机器码的前后。
也可以理解为一个相对概念,即将使能开关在机器码执行前执行,理解为使能开关在机器码前,将结束开关在机器码执行后执行,理解为结束开关在机器码后,例如,在一个实施例中,将待测量代码对应的机器码的起始地址处的机器码替换为使能开关,当软件运行过程中,触发使能开关后,将起始地址的机器码还原,控制系统执行起始地址中的机器码,此时,虽然使能开关和起始地址中的机器码实际上是存在于同一地址,但是它们存在的时间有先后,运行的时间也有先后,所以也可以理解为使能指令在待测量代码对应的机器码前,对于结束开关,可以用结束开关替换待测量代码对应的机器码的下一个机器码,当待测量代码对应的机器码执行完毕后,就会触发结束开关结束性能统计。其中,触发结束开关之后,需要将存储结束开关的地址中的机器码还原,再控制系统执行该址中的机器码。
在S103中,在软件的运行过程中,会先触发使能开关,开启性能统计功能,然后再执行待测量代码对应的机器码,此时会开始对待测量代码的性能统计,当待测量代码的最后一条机器码执行完毕后,会触发结束开关关闭性能统计功能,结束对待测量代码的性能统计。
为了实现准确地对待测量代码的性能统计,本实施例中可以采用指令替换的方式将使能开关和结束开关替换到机器码中的相应位置,开启性能统计后,将使能开关的地址中的机器码还原,重新执行该机器码避免对软件本身的性能和运行结果产生影响,同样的,关闭性能统计后,将结束开关的地址中的机器码还原,重新执行该机器码。
本实施例中,可以用第一指令实现使能开关,用于开启性能统计功能,第二指令实现结束开关,用于关闭性能统计功能。本实施例中性能统计功能可以由性能统计代码提供,该性能统计代码可以预先写入运行应用软件的系统中。第一指令和第二指令的作用分别是控制性能统计代码的开启和结束。
具体的,S101-S103包括:
确定软件中的待测量代码对应的机器码的起始地址和结束地址;
将起始地址和结束地址中的机器码替换为第一指令和第二指令;
在软件的运行过程中,当第一指令执行后,还原起始地址中的机器码,从该起始地址重新执行待测量代码;
利用性能统计代码对待测量代码进行性能统计;
当第二指令执行后,还原结束地址中的机器码,并从该结束地址重新开始运行机器码。
本实施例中的起始地址指的是待测量代码对应的第一条机器码的地址。可以想到的是,在本实施例中,在性能统计的过程中,结束地址中的机器码是没有被统计到的,所以结束地址对应的机器码不属于待测量代码对应的机器码。优选地,结束地址是待测量代码对应的最后一条机器码的下一条机器码的地址,可以确保对待测量代码的所代码行都进行了性能统计。
在本实施例中,为了能够还原起始地址和结束地址中的机器码,在利用第一指令和第二指令替换机器码前,可以先分别对起始地址和结束地址中的机器码进行复制。在第一指令执行后,立刻将复制的起始地址中的机器码还原,替换第一指令。此时,程序计数器PC(Program Counter)已经指向该起始地址的下一个地址,但是该起始地址中的机器码还未执行,所以需要控制PC重新指向该起始地址,以便执行该起始地址中的机器码。
同样的,在第二指令执行后,也需要将复制的结束地址中的机器码还原,替换第二指令,再控制程序计数器PC(Program Counter)指向结束地址,执行结束地址的机器码。这样可以保证应用软件代码不被修改,并且无法感知曾经发生过性能统计事件。
在本实施例中,第一指令以及第二指令的设置对本实施例的性能统计方法的优良性具有影响,本实施例提供了两种第一指令和第二指令的指令实现方式:
第一种:第一指令包括第一跳转指令,第二指令包括第二跳转指令,第一跳转指令用于控制性能统计代码的开启代码的执行,第二跳转指令用于控制性能统计代码的结束代码的执行。
对第一跳转指令而言,可以将性能统计代码的开启代码的地址作为第一跳转地址,当系统执行第一跳转指令时,第一跳转指令控制系统执行第一跳转地址中的代码,即性能统计代码的开启代码,开启性能统计。对第二跳转指令而言,可以将性能统计代码的结束代码的地址作为第二跳转地址,当系统执行第二跳转指令时,第二跳转指令控制系统执行第二跳转地址中的代码,即性能统计代码的结束代码,结束性能统计。
第二种:第一跳转指令包括性能统计代码的开启代码,第二跳转指令包括性能统计代码的结束代码。
对于上述的第一种指令实现方式,第一指令和第二指令内容简单,执行方式简单,执行的时间短。对于第二种指令实现方式,性能统计代码的开启代码相对于替换指令而言比较复杂,涉及的参数较多,开启代码需要进行多种配置,例如对寄存器的配置,所以,采用第一种指令实现方式,跳转指令执行简单,更具有优势。
可以想到的是,性能统计代码的快速开启和快速结束可以让性能统计结果更准确,由此,本实施例中的性能统计代码的开启代码和结束代码可以由汇编语言实现,性能统计代码的其他部分的编码语言的种类不限,可以利用汇编语言实现,也可以用C语言或其他语言实现。
在本实施例中,可以采用现有的文件解析技术确定待测量代码对应的机器码的地址,采用此种方法,需要先知道待测量代码所在的文件的名称,在软件中的起始行数和结束行数,然后再利用文件解析技术根据文件的名称、起始行数和结束行数确定待测量代码对应的机器码的起始地址和结束地址。其中,待测量代码所在的文件也即待测量代码对应的软件所在的文件。
可以想到的是结束地址对应的是待测量代码对应的机器码的下一条机器码的地址,所以本实施例中,结束行数是待测量代码的下一行代码的行数。
本实施例中待测量代码可以由测试人员选择,例如,在后台工具的配置界面上,测试人员输入需要进行性能数据采集的待测量代码的信息,具体的,输入待测量代码所在的文件的名称,起始行数和结束行数。后台工具可以利用dwarf(Debugging With AttributedRecord Formats)文件解析技术根据输入的信息,建立文件的名称、起始行数、结束行数与机器码地址之间的关系,并根据文件名称、起始行数和结束行数,计算出对应的机器码的地址,包括待测量代码对应的机器码的起始地址和结束地址。
之后,后台工具可以将计算得到的机器码的地址(起始地址和结束地址),通过网络协议发送给前台监控线程,由前台监控线程根据接收到的地址实现上述使能开关和结束开关的设置。
在性能统计代码对待测量代码统计完成后,得到相应的统计结果,为了更好地对该结果进行分析利用,可以将该结果进行保存。进一步地可以将该结果发送给后台工具进行显示,具体的,前台监控线程可以通过网络协议将性能统计结果发给后台工具,供后台工具显示和后续分析应用软件的性能瓶颈。
在本发明的另一实施例中,开始地址和结束地址可以是待测量代码对应的第一条机器码的地址和最后一条机器码的地址,待测量代码的结束行数是待测量代码的最后一行代码的行数,此时,S101-S103具体为:
确定软件中的待测量代码对应的机器码的起始地址和结束地址;
确定待测量代码对应的最后一条机器码的下一条机器码的地址,将其作为实际结束地址;
将起始地址和实际结束地址中的机器码替换为第一指令和第二指令;
在软件的运行过程中,当第一指令执行后,还原起始地址中的机器码,从该起始地址重新执行待测量代码;
利用性能统计代码对待测量代码进行性能统计;
当第二指令执行后,还原实际结束地址中的机器码,并从该实际结束地址重新开始运行机器码。
采用本实施例的软件性能数据采集方法,可以通过在软件对应的机器码中设置使能开关和结束开关的方式对软件的任意一部分代码进行性能统计,而无需对软件做任何的修改,相对于限于技术中对软件本身进行修改达到统计软件性能目的的方案,本实施例中的方案无需再应用软件层面加入性能统计模块,因此不会影响软件的性能,明显具有更高的实用性,能适应跟高要求的软件性能统计,能动态制定软件片段进行性能数据的采集,提性能数据采集和性能分析的效率。
实施例二:
参见图2,本实施例提供一种软件性能数据采集方法。在本实施例中,对待测量代码的机器码的地址的确定是利用后台工具完成,根据机器码的地址实现待测量代码的性能统计是由前台系统完成的。
本实施例的软件性能数据采集方法包括:
S201、后台工具获取用户输入的待测量代码的位置信息;该位置信息包括待测量代码所在的文件的名称和该待测量代码在软件中的起始行数和结束行数;
这里的结束行数应理解为待测量代码的最后一行代码的下一行代码的行数,起始行数理解为待测量代码的最后一行代码的下一行代码的行数。
S202、后台工具利用dwarf文件解析技术对待测量点的位置信息进行分析,确定待测量代码在前台运行时对应的机器码的起始地址和结束地址;起始地址和结束地址是前台系统可识别的形式。
这里的结束地址应理解为待测量代码对应的对后一行机器码的下一行机器码的地址,起始地址理解为待测量代码对应的第一行机器码的地址。
S203、后台工具通过网络协议将起始地址和结束地址发给前台系统;
S204、前台系统接收起始地址和结束地址;
S205、前台系统备份起始地址和结束地址中的机器码;
S206、前台系统将起始地址和结束地址中的机器码替换为第一跳转指令和第二跳转指令;
第一跳转指令和第二跳转指令分别用于控制性能统计代码的开启代码的执行和结束代码的执行。即执行第一跳转指令的结果是开始执行性能统计代码的开启代码。执行第二跳转指令的结果是开始执行性能统计代码的结束代码。
在另一实施例中,可以将第一跳转指令和第二跳转指令分别替换为性能统计代码的开启代码和结束代码。
S207、在软件的运行过程中,当第一跳转指令被执行,将之前复制的起始地址中的机器码还原,并控制PC重新指向起始地址;
S208、在待测量代码的执行过程中,利用性能统计代码对待测量代码进行性能数据的统计;其中统计的性能指标可以参考背景技术中的相关内容,这里不再赘述。
S209、当第二跳转指令被执行,将之前复制的结束地址中的机器码还原,并控制PC重新指向起始地址;
S210、结束性能统计,将性能数据采集结果存储到前台本地,前台系统通过网络协议将存储的性能数据采集结果发送到后台;
S211、后台工具通过网络协议接收前台采集的性能数据并存储到本地;
S212、后台工具对存储到本地的性能数据进行解析并显示。
采用本实施例的软件性能数据采集方法,采用了指令替换技术和dwarf文件格式解析技术,利用跳转指令替换机器码,实现对性能统计的开启和结束的控制,在本实施例中,跳转指令的替换位置由待测量代码在软件中的位置决定,在机器码层面实现了软件的性能统计,避免了采用现有技术在应用软件层面加入性能统计模块对软件性能的影响,此外,本实施例的方案还可以动态指定软件的部分代码进行性能统计,提高性能数据的统计和性能分析效率。
实施例三:
参见图3,本实施例提供一种软件性能数据采集装置,包括:
获取模块31,用于确定软件中的待测量代码对应的机器码的地址;
配置模块32,用于在机器码的前后分别插入使能开关和结束开关;使能开关用于开启性能统计功能对待测量代码进行性能统计,结束开关用于关闭性能统计功能;
统计模块33,用于在软件的运行过程中,对待测量代码进行性能统计。在本实施例中的软件包括但不限于应用软件。在本实施例中,对在待测量的机器码前后分别插入使能开关进和结束开关中的“前后”,可以有两种理解方式:
一:可以理解为使能开关和结束开关的地址相对于机器码的地址的前后,即使能开关的地址在待测量代码对应的机器码的地址前,结束开关的地址在待测量代码对应的机器码的地址后。
二、可以理解为一执行时间的前后,使能开关在待测量代码对应的机器码开始执行前被触发,结束开关在待测量代码对应的机器码执行完成后被触发。具体的,将待测量代码对应的机器码的起始地址处的机器码替换为使能开关,当软件运行过程中,触发使能开关后,将起始地址的机器码还原,控制系统执行起始地址中的机器码,此时,虽然使能开关和起始地址中的机器码实际上是存在于同一地址,但是它们存在的时间有先后,运行的时间也有先后,所以也可以理解为使能指令在待测量代码对应的机器码前,对于结束开关,可以用结束开关替换待测量代码对应的机器码的下一个机器码,当待测量代码对应的机器码执行完毕后,就会触发结束开关结束性能统计。
为了统计模块33对待测量代码的性能统计更准确,避免对不属于待测量代码的代码进行统计。本实施例中,配置模块32可以采用指令替换的方式将使能开关和结束开关替换到机器码中的相应位置,在开启性能统计后,将使能开关的地址中的机器码还原,重新执行该机器码避免对软件本身的性能和运行结果产生影响,同样的,在关闭性能统计后,将结束开关的地址中的机器码还原,重新执行该机器码。
具体的,获取模块获取31用于确定软件中的待测量代码对应的机器码的起始地址和结束地址;这里的结束地址是待测量代码对应的机器码的下一条机器码的地址;
配置模块32用于,将起始地址和结束地址中的机器码分别替换为第一指令和第二指令,该第一指令和第二指令分别用于开启性能统计功能和关闭性能统计功能,该性能统计功能由性能统计代码实现。可以想到的是,性能统计代码可以预先保存在运行软件的系统中,相应的,第一指令和第二指令的作用分别是控制性能统计代码的开启和结束。
在本实施例中,获取模块31获取起始地址和结束地址的方式包括:获取待测量代码对应的软件所在的文件的名称,在软件中的起始行数和结束行数;利用文件解析技术根据文件的名称,起始行数和结束行数确定待测量代码对应的机器码的起始地址和结束地址。这里的结束行数为待测量代码的后一行代码的下一行代码的行数。
在本实施例中,配置模块32还用于在软件的运行过程中,当第一指令执行后,还原起始地址中的机器码,并控制系统从起始地址重新开始执行待测量代码;当第二指令执行后,还原结束地址中的机器码,并控制系统从结束地址重新开始执行机器码。
其中,为了还原起始地址和结束地址中的机器码,配置模块32还用于在将起始地址和结束地址中的机器码分别替换为第一指令和第二指令前,对起始地址和结束地址中的机器码进行复制。在起始地址和结束地址中的机器码还原之后,配置模块32控制系统从起始地址或结束地址重新执行机器码的实现方法包括,配置模块32在还原起始地址中的机器码后,控制PC重新指向起始地址,配置模块32在还原结束地址中的机器码后,控制PC重新指向结束地址,这样可以保证应用软件代码不被修改,并且无法感知曾经发生过性能统计事件。
在本实施例中,第一指令以及第二指令的设置对本实施例的性能统计方法的优良性具有影响,本实施例提供了两种第一指令和第二指令的指令实现方式:
第一种:第一指令包括第一跳转指令,第二指令包括第二跳转指令,第一跳转指令用于控制性能统计代码的开启代码的执行,第二跳转指令用于控制性能统计代码的结束代码的执行。
对第一跳转指令而言,可以将性能统计代码的开启代码的地址作为第一跳转地址,当系统执行第一跳转指令时,第一跳转指令控制系统执行第一跳转地址中的代码,即性能统计代码的开启代码,开启性能统计。对第二跳转指令而言,可以将性能统计代码的结束代码的地址作为第二跳转地址,当系统执行第二跳转指令时,第二跳转指令控制系统执行第二跳转地址中的代码,即性能统计代码的结束代码,结束性能统计。
第二种:第一跳转指令包括性能统计代码的开启代码,第二跳转指令包括性能统计代码的结束代码。
对于上述的第一种指令实现方式,第一指令和第二指令内容简单,执行方式简单,执行的时间短。对于第二种指令实现方式,性能统计代码的开启代码相对于替换指令而言比较复杂,涉及的参数较多,开启代码需要进行多种配置,例如对寄存器的配置,所以,采用第一种指令实现方式,跳转指令执行简单,更具有优势。
可以想到的是,性能统计代码的快速开启和快速结束可以让性能统计结果更准确,由此,本实施例中的性能统计代码的开启代码和结束代码可以由汇编语言实现,用于现场寄存器保存和现场寄存器恢复,性能统计代码的其他代码部分的编码语言的种类不限,可以利用汇编语言实现,也可以用C语言或其他语言实现。
在另一实施例中,获取模块31用于待获取待测量代码对应的软件所在的文件的名称,在软件中的起始行数和结束行数,并利用文件解析技术根据名称、起始行数和结束行数确定待测量代码对应的机器码的起始地址和结束地址。这里的起始行数和结束行数对应于待测量代码的第一行和最后一行代码的行数,起始地址和结束地址分别是待测量代码对应的机器码的第一条机器码和最后一条机器码的地址。
此时,配置模块32用于,将起始地址中的机器码替换为第一指令,将待测量代码的下最后一行代码的下一行代码对应的机器码替换为第二指令,即将结束地址后的相邻地址作为实际结束地址,将实际结束地址中的机器码替换为第二指令,避免性能统计时,缺少对待测量代码对应的机器码的最后一条的性能统计。
采用本实施例的软件性能数据采集装置,配置模块可以根据获取模块获取的待测量代码对应的机器码的地址,在机器码的前后分别插入使能开关和结束开关,控制开启性能统计功能对待测量代码进行性能统计,以及关闭性能统计功能,插入的位置可以根据待测量代码在软件中的位置变换而变化,达到灵活改变测量位置的效果,使得本实施例的装置可以动态指定软件中的代码进行性能统计,提高了性能数据采集的效率,也有助于提高性能分析效率。
显然,本领域的技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (8)
1.一种软件性能数据采集方法,包括:
确定软件中的待测量代码对应的机器码的起始地址和结束地址;所述结束地址为所述机器码的下一条机器码的地址;
将所述起始地址和所述结束地址中的机器码分别替换第一指令和第二指令;所述第一指令和所述第二指令分别用于开启性能统计功能和关闭性能统计功能;所述性能统计功能由性能统计代码提供;
在所述软件的运行过程中,当所述第一指令执行后,还原所述起始地址中的机器码,并从所述起始地址重新开始执行所述待测量代码;利用所述性能统计代码对所述待测量代码进行性能统计;当所述第二指令执行后,还原所述结束地址中的机器码,并从所述结束地址重新开始执行机器码。
2.如权利要求1所述的软件性能数据采集方法,其特征在于,所述第一指令包括第一跳转指令,用于控制所述性能统计代码的开启代码的执行,所述第二指令包括第二跳转指令,用于控制所述性能统计代码的结束代码的执行;
或者,所述第一指令包括性能统计代码的开启代码,所述第二指令包括性能统计代码的结束代码。
3.如权利要求2所述的软件性能数据采集方法,其特征在于,所述性能统计代码的开启代码和结束代码由汇编语言实现。
4.如权利要求1-3任一项所述的软件性能数据采集方法,其特征在于,所述确定软件中的待测量代码对应的机器码的起始地址和结束地址包括:
获取待测量代码所在的文件的名称,在所述软件中的起始行数和结束行数;所述结束行数为待测量代码的下一行代码的行数;
利用文件解析技术根据所述名称、起始行数和结束行数确定所述待测量代码对应的机器码的起始地址和结束地址。
5.一种软件性能数据采集装置,其特征在于,包括:
获取模块,用于确定软件中的待测量代码对应的机器码的起始地址和结束地址;所述结束地址为所述机器码的下一条机器码的地址;
配置模块,用于将所述起始地址和所述结束地址中的机器码分别替换为第一指令和第二指令;在所述软件的运行过程中,当所述第一指令执行后,还原所述起始地址中的机器码,并控制系统从所述起始地址重新开始执行所述待测量代码;当所述第二指令执行后,还原所述结束地址中的机器码,并控制系统从所述结束地址重新开始执行机器码;所述第一指令和所述第二指令分别用于开启性能统计功能和关闭性能统计功能;所述性能统计功能由性能统计代码提供;
统计模块,用于在所述软件的运行过程中,当所述第一指令执行后,还原所述起始地址中的机器码,并从所述起始地址重新开始执行所述待测量代码;利用所述性能统计代码对所述待测量代码进行性能统计;当所述第二指令执行后,还原所述结束地址中的机器码,并从所述结束地址重新开始执行机器码。
6.如权利要求5所述的软件性能数据采集装置,其特征在于,所述第一指令包括第一跳转指令,第二指令包括第二跳转指令,分别用于控制所述性能统计代码的开启代码的执行,控制所述性能统计代码的结束代码的执行;
或者,所述第一指令包括性能统计代码的开启代码,所述第二指令包括性能统计代码的结束代码。
7.如权利要求6所述的软件性能数据采集装置,其特征在于,所述性能统计代码的开启代码和结束代码由汇编语言实现。
8.如权利要求5-7任一项所述的软件性能数据采集装置,其特征在于,所述获取模块用于,获取待测量代码所在的文件的名称,在所述软件中的起始行数和结束行数;利用文件解析技术根据所述名称、起始行数和结束行数确定所述待测量代码对应的机器码的起始地址和结束地址;所述结束行数为待测量代码的下一行代码的行数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610416979.XA CN107506293B (zh) | 2016-06-14 | 2016-06-14 | 一种软件性能数据采集方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610416979.XA CN107506293B (zh) | 2016-06-14 | 2016-06-14 | 一种软件性能数据采集方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107506293A CN107506293A (zh) | 2017-12-22 |
CN107506293B true CN107506293B (zh) | 2022-04-22 |
Family
ID=60678974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610416979.XA Active CN107506293B (zh) | 2016-06-14 | 2016-06-14 | 一种软件性能数据采集方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107506293B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108459940B (zh) * | 2018-01-16 | 2021-06-18 | 北京奇艺世纪科技有限公司 | 应用性能管理系统的配置信息修改方法、装置及电子设备 |
CN108196875B (zh) * | 2018-01-31 | 2021-07-09 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种用于app自身业务的统计系统及方法 |
CN108874646A (zh) * | 2018-06-13 | 2018-11-23 | 北京趣拿软件科技有限公司 | 分析数据的方法和装置 |
CN110580220B (zh) * | 2019-08-12 | 2023-05-23 | 百富计算机技术(深圳)有限公司 | 测量代码段执行时间的方法及终端设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101122880A (zh) * | 2007-09-17 | 2008-02-13 | 福建星网锐捷网络有限公司 | 内嵌调试器的嵌入式系统及嵌入式系统调试方法 |
WO2015042964A1 (zh) * | 2013-09-30 | 2015-04-02 | 华为技术有限公司 | 一种软件测试方法及装置 |
CN105354045A (zh) * | 2014-08-21 | 2016-02-24 | 中兴通讯股份有限公司 | 补丁的制作方法及装置、补丁的激活方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9495278B2 (en) * | 2006-12-27 | 2016-11-15 | International Business Machines Corporation | Dynamic discovery of data segments within instrumented code |
-
2016
- 2016-06-14 CN CN201610416979.XA patent/CN107506293B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101122880A (zh) * | 2007-09-17 | 2008-02-13 | 福建星网锐捷网络有限公司 | 内嵌调试器的嵌入式系统及嵌入式系统调试方法 |
WO2015042964A1 (zh) * | 2013-09-30 | 2015-04-02 | 华为技术有限公司 | 一种软件测试方法及装置 |
CN105354045A (zh) * | 2014-08-21 | 2016-02-24 | 中兴通讯股份有限公司 | 补丁的制作方法及装置、补丁的激活方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107506293A (zh) | 2017-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107506293B (zh) | 一种软件性能数据采集方法和装置 | |
US9483383B2 (en) | Injecting faults at select execution points of distributed applications | |
CN109643346B (zh) | 控制流完整性 | |
US9355002B2 (en) | Capturing trace information using annotated trace output | |
US10956161B2 (en) | Indirect target tagged geometric branch prediction using a set of target address pattern data | |
EP3534266B1 (en) | Method, apparatus and system for prefetching data | |
US20190354372A1 (en) | Method for maintaining a branch prediction history table | |
CN109981715B (zh) | 一种会话管理的方法及装置 | |
CN106547587B (zh) | 用于生成目标程序的配置文件的装置和方法 | |
CN103592997A (zh) | 用于在时钟源的时钟网格的自动时钟门控的方法和系统 | |
WO2018149495A1 (en) | A method and system to fetch multicore instruction traces from a virtual platform emulator to a performance simulation model | |
CN112988185A (zh) | 云应用更新方法、装置、系统、电子设备及存储介质 | |
US10318456B2 (en) | Validation of correctness of interrupt triggers and delivery | |
CN107436752B (zh) | 异常现场恢复方法、装置及计算机可读存储介质 | |
CN111078418B (zh) | 操作同步方法、装置、电子设备及计算机可读存储介质 | |
TWI772305B (zh) | 用於由處理電路系統產生及處理指示指令執行的追蹤串流的設備及方法 | |
WO2017197982A1 (zh) | 报文处理方法、装置及系统和计算机存储介质 | |
WO2018023966A1 (zh) | 一种缓存策略的确定方法及装置 | |
US9594666B2 (en) | Enhancing weak consistency | |
CN108345534B (zh) | 生成和处理跟踪流的装置和方法 | |
US9081895B2 (en) | Identifying and tagging breakpoint instructions for facilitation of software debug | |
CN106598687B (zh) | 一种脚本预热方法和装置 | |
US8698822B1 (en) | Managing visual updates | |
CN111913996B (zh) | 数据处理方法、装置、设备及存储介质 | |
US10165074B2 (en) | Asynchronous custom exit points |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |