一种应用程序重放方法及系统的制作方法

文档序号:6635935阅读:174来源:国知局
一种应用程序重放方法及系统的制作方法
【专利摘要】本发明公开了一种应用程序重放方法及系统,所述方法包括以下步骤:S1、目标机下载宿主机的应用程序;S2、在所述应用程序中插桩,获取并上传所述应用程序的执行信息;S3、根据事件信息在所述应用程序的对应的事件发生点设置断点;所述事件信息由所述宿主机对所述执行信息进行分析和处理得到的,所述事件信息为引起任务间切换的信息;S4、重新启动应用程序,执行遇到所述断点时,根据切换任务信息切换所述应用程序的任务,实现所述应用程序按照原运行顺序执行;所述切换任务信息由所述宿主机根据所述事件信息分析计算得到。本发明通过插桩探针来记录应用程序的执行信息,大大减少了时间和空间的消耗,可以用在嵌入式实时系统等所有的系统中。
【专利说明】一种应用程序重放方法及系统

【技术领域】
[0001]本发明涉及执行重放【技术领域】,更具体涉及一种应用程序重放方法及系统。

【背景技术】
[0002]随着用户对软件系统性能要求的提高,并发技术得到了广泛使用。但是并发技术的使用在提高软件性能的同时,也给软件开发人员的开发带来了很大的困难,尤其是对于嵌入式软件系统,由于并发程序执行的不确定性、错误的不可再现性,使得传统的顺序程序调试方法变得不再适用。在并发程序的开发过程中,通常使用执行重放技术来实现软件调试时的错误重现以及程序的重执行,即通过对目标程序的执行情况进行记录追踪,之后在相同的输入条件下,根据记录下来的执行信息来使得目标程序的运行情况再现。执行重放技术的研宄对于并发程序的调试有很重要的意义。
[0003]目前,对于并发程序的执行重放,国内外已经有人提出了一些方法,主要包括:
[0004]一种基于内容的执行重放方法^^叩,通过追踪所有共享内存中的数据来实现程序的重放。该方法的优点是能够单独重放系统中特定的某个或几个进程,但由于需要存储所有的数据操作,导致时间和空间开销很大,实用性较弱,很难用于嵌入式实时系统。
[0005]此外,还有一类基于顺序的执行重放方法,这类方法通过特殊的方式来保证重放状态下软件系统的操作顺序与执行时的系统操作顺序相一致,从而达到重放错误以及程序冲执行的目的。与基于内容的方法相比,这类方法可以大大减少时间和空间开销。目前大多数的执行重放方法都属于这类方法,典型的有以下几种:
[0006]1681&110 提出的 1 = 81:8111:方法旨在实现
1^68(161-&2X01118^6并行系统的故障重现。该方法为每个共享对象添加版本号,每个线程都将访问共享内存对象时的版本号记录到日志文件来保证重放时的确定性。这种方法虽然能够在一定程度上减少空间开销,但是缺点是只能应用于满足⑶冊性质的冊IX系统。?0尺方法采用增量检查点机制,通过把程序分为若干个重放间隔,每个间隔只记录这个内存位置更新之前存放的值,从而实现程序的确定性重放,但是这种方法需要特殊硬件的支持。现有的这些执行重放方法对硬件资源的消耗非常巨大,尤其对于嵌入式实时系统,根本不能应用,因为嵌入式实时系统的硬件资源有限,无法直接存储大量的日志信息;而且嵌入式实时系统的实时中断和任务实时性要求也与不同系统有很多区别,在执行重放系统执行时还需要考虑任务的调度以及任务间的同步和通信等情况。
[0007]综上所述,现有的执行重放方法,时间和空间的消耗很大,普遍适用性不强。


【发明内容】

[0008](一 )要解决的技术问题
[0009]本发明要解决的技术问题是如何降低程序重放过程中对于时间和空间的消耗。
[0010](二)技术方案
[0011]为了解决上述技术问题,本发明提供了一种应用程序重放方法,所述方法包括以下步骤:
[0012]51、目标机下载宿主机的应用程序;
[0013]32、在所述应用程序中插粧,获取并上传所述应用程序的执行信息到所述宿主机;
[0014]33、根据事件信息在所述应用程序的对应的事件发生点设置断点;所述事件信息由所述宿主机对所述执行信息进行分析和处理得到的,所述事件信息为引起任务间切换的信息。
[0015]34、重新启动应用程序,执行遇到所述断点时,根据切换任务信息切换所述应用程序的任务,实现所述应用程序按照原运行顺序执行;所述切换任务信息由所述宿主机根据所述事件信息分析计算得到。
[0016]优选地,获取所述执行信息包括获取控制流信息和获取数据流信息;
[0017]其中,获取所述控制流信息包括获取任务切换信息、获取同步事件信息和获取异步事件信息;获取所述任务切换信息为在调度函数内设置探针实现;获取所述同步事件信息为在相应的函数处设置探针实现;获取所述异步事件信息为在中断进入函数和中断退出函数处设置探针实现;
[0018]获取所述数据流信息包括获取外部输入的数据信息和获取任务间传递的数据信息,通过在发生数据接收处设置探针实现。
[0019]优选地,获取所述同步事件信息包括获取信号量的获取信息、获取信号量的释放信息、获取消息的接收信息、获取消息的发送信息以及获取任务的延时信息;其中,获取所述信号量的获取信息和信号量的释放信息为分别在信号量的获取函数和信号量的释放函数处设置探针来实现;获取所述消息的接收信息和消息的发送信息为分别在消息的接收函数和消息的发送函数处设置探针实现;获取所述任务的延时信息为在任务延时函数处设置探针实现。
[0020]优选地,获取所述任务切换信息包括获取事件类型、获取事件发生时的时间戳、获取切换前任务的上下文信息以及获取切换后任务的上下文信息;
[0021]获取所述信号量的获取信息和信号量的释放信息均包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器的值、获取信号量编号10、获取信号量操作时的任务编号10以及获取事件计数值;
[0022]获取所述消息的接收信息和消息的发送信息均包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器的值、获取消息队列编号10、获取事件发生时的任务编号10以及获取事件计数值;
[0023]获取所述任务的延时信息包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器?的值以获取及事件计数值。
[0024]优选地,得到引起任务间切换的所述事件信息的具体过程为:
[0025]331、所述宿主机将所述执行信息中的所有事件按照所述事件发生时的时间戳进行排序;
[0026]332、剔除与所述应用程序无关的事件的信息;
[0027]333、将引起任务间切换的事件剥离出来。
[0028]优选地,所述步骤34中,由所述宿主机根据所述步骤33得到的事件信息,在所述应用程序的事件发生点设置断点。
[0029]优选地,在所述应用程序的事件发生点设置断点由调试器完成。
[0030]优选地,在所步骤33中,通过所述任务编号10和程序计数器的值,在对应任务编号10的任务处,在对应程序计数器?值处设置断点。
[0031]优选地,所述切换任务信息的获取过程为:若同步事件信息或异步事件信息的后面为一条所述任务切换信息,则此同步事件或异步事件引起了任务切换,所述应用程序执行完所述同步事件或异步事件后,发送所述切换任务信息。
[0032]优选地,所述步骤333中,引起任务间切换的事件为:所述事件的后面一条所述任务切换信息。
[0033]一种应用程序重放系统,包括宿主机和目标机;
[0034]所述宿主机设置历史分析器和重放器;所述目标机设置记录器;
[0035]所述记录器用于记录应用程序执行过程中的执行信息,并上传给所述宿主机;
[0036]所述历史分析器用于将所述执行信息进行分析和处理后得到引起任务间切换的事件信息;
[0037]所述重放器用于根据所述事件信息在所述应用程序对应的事件发生点设置断点、启动所述应用程序再次执行以及所述应用程序再次执行遇到断点,根据所述事件信息分析计算得到切换任务信息,并下发给所述目标机。
[0038]优选地,所述记录器包括在调度函数内设置探针,用于获取任务切换信息;
[0039]在中断进入函数和中断退出函数处设置探针,用于获取异步事件信息;
[0040]在信号量的获取函数和信号量的释放函数处设置探针,用于获取信号量的获取信息和信号量的释放信息;
[0041]在消息的接收函数和消息的发送函数处设置探针,用于获取消息的接收信息和消息的发送信息;
[0042]在任务延时函数处设置探针,用于所述任务的延时信息。
[0043]优选地,获取所述任务切换信息包括获取事件类型、获取事件发生时的时间戳、获取切换前任务的上下文信息以及获取切换后任务的上下文信息;
[0044]获取所述信号量的获取信息和信号量的释放信息均包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器的值、获取信号量编号10、获取信号量操作时的任务编号10以及获取事件计数值;
[0045]获取所述消息的接收信息和消息的发送信息均包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器的值、获取消息队列编号10、获取事件发生时的任务编号10以及获取事件计数值;
[0046]获取所述任务的延时信息包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器?的值以获取及事件计数值。
[0047](三)有益效果
[0048]本发明提供了一种应用程序重放方法及系统,本发明通过插粧探针来记录应用程序的执行信息,并自动将应用程序的执行信息上传至宿主机进行分析和处理,在程序重放阶段借助调试器来控制程序按照程序的原有执行状态执行,从而实现应用程序的重放,本发明将大大减少了时间和空间的消耗,可以用在嵌入式实时系统等所有的系统中;
[0049]由于本发明中提出的技术方案不需要特殊的硬件和软件的支持,因此该方案的原理和思想具有通用性和可移植性,可以应用到大多数的硬件平台和软件系统中,尤其可以应用到嵌入式实时系统中,可以在一定程度上减轻了程序开发人员的调试压力。

【专利附图】

【附图说明】
[0050]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0051]图1为本发明的一种应用程序重放方法的流程图;
[0052]图2为本发明的一个较佳实施例的一种应用程序重放方法的流程图;
[0053]图3为任务切换信息的获取流程图;
[0054]图4为同步事件彳目息的获取流程图;
[0055]图5为异步事件信息的获取流程图;
[0056]图6为得到引起任务间切换的所述事件信息的流程图;
[0057]图7为断点处理流程图;
[0058]图8为本发明的一种应用程序重放系统结构示意图。

【具体实施方式】
[0059]下面结合附图和实施例对本发明作进一步详细描述。以下实施例用于说明本发明,但不能用来限制本发明的范围。
[0060]图1为本发明的一种应用程序重放方法的流程图;所述方法包括以下步骤:
[0061]31、目标机下载宿主机的应用程序;
[0062]32、在所述应用程序中插粧,获取并上传所述应用程序的执行信息到所述宿主机;
[0063]33、根据事件信息在所述应用程序的对应的事件发生点设置断点;所述事件信息由所述宿主机对所述执行信息进行分析和处理得到的,所述事件信息为引起任务间切换的信息。
[0064]34、重新启动应用程序,执行遇到所述断点时,根据切换任务信息切换所述应用程序的任务,实现所述应用程序按照原运行顺序执行;所述切换任务信息由所述宿主机根据所述事件信息分析计算得到。
[0065]本发明的方法通过插粧探针来记录应用程序的执行信息,并自动将应用程序的执行信息上传至宿主机进行分析和处理,在程序重放阶段借助调试器来控制程序按照程序的原有执行状态执行,从而实现应用程序的重放,本发明的方法将大大减少了时间和空间的消耗,可以用在嵌入式实时系统等所有的系统中。
[0066]优选地,获取所述执行信息包括获取控制流信息和获取数据流信息;其中,控制流^[目息包括任务切换彳目息、同步事件彳目息和异步事件彳目息;所述任务切换彳目息为在调度函数内设置探针来获取信息;所述同步事件信息为在相应的函数处设置探针来获取信息;所述异步事件信息为在中断进入函数和中断退出函数处设置探针来获取信息;所述数据流信息包括外部输入的数据信息和任务间传递的数据信息,通过在发生数据接收处设置探针实现,所述数据流信息保存到文件中,使用时直接从文件中读取出来。
[0067]所述同步事件信息包括信号量的获取信息、信号量的释放信息、消息的接收信息、消息的发送信息以及任务的延时信息;其中,所述信号量的获取信息和信号量的释放信息为分别在信号量的获取函数和信号量的释放函数处设置探针来获取信息;所述消息的接收信息、消息的发送信息为分别在消息的接受函数和消息的发送函数处设置探针来获取信息;所述任务的延时信息为在任务延时函数处设置探针来获取信息。
[0068]所述任务切换信息包括事件类型、事件发生时的时间戳丨1068仏卹、切换前任务的上下文信息以及切换后任务的上下文信息。图3为任务切换信息的获取流程图。从图3中可以看到,首先处理工作队列中的工作,处理完毕后,从任务队列中找到优先级最高的任务,然后判断工作队列是否为空,若不是,则返回工作队列继续处理,否则由调度函数内设置的探针来记录任务切换信息,并加载任务执行。
[0069]所述信号量的获取信息和信号量的释放信息均包括事件类型、事件发生时的时间戳七加⑶仏即、事件发生时程序计数器?的值、信号量编号10、信号量操作时的任务编号10以及事件计数值。所述消息的接收信息和消息的发送信息均包括事件类型、事件发生时的时间戳丨111168仏卹、事件发生时程序计数器?的值、消息队列编号10、操作时的任务编号10以及事件计数值。所述任务的延时信息包括事件类型、事件发生时的时间戳1:1111681:21卹、事件发生时程序计数器?的值以及事件计数值。图4为同步事件信息的获取流程图,从图4中看出,首先获取当前?值,然后让事件计数值加1,由插粧探针记录相应的同步事件信息,在对相关事件进行处理。
[0070]异步事件信息包括事件类型、事件发生时的时间戳1:1111681:2111?)、事件发生时程序计数器的值,图5为异步事件信息的获取流程图,从图5中看到,中断事件入之后,由中断进入函数和中断退出函数探针处的探针来获取信息。
[0071]优选地,得到引起任务间切换的所述事件信息的具体过程为,如图6所示:
[0072]331、所述宿主机将所述执行信息(初始日志文件)中的所有事件按照所述事件发生时的时间戮进彳丁排序;
[0073]332、剔除与所述应用程序无关的事件的信息,即剔除与系统任务相关的信息;
[0074]333、将引起任务间切换的事件剥离出来,即剔除不引起任务切换的事件信息。
[0075]上述步骤31中,首先开启目标机和宿主机,在宿主机和目标机间建立连接,然后将应用程序载入目标机。
[0076]上述步骤32中,插粧设置的探针的总体构成了记录器;执行应用程序之前,首先由宿主机开启记录器,控制目标机的记录器开启以及初始化,然后再执行应用程序。记录器用于应用程序的首次执行,主要记录目标机端记录应用程序的运行状态,包括任务的切换顺序以及数据的存取顺序,即应用程序运行时的控制流和数据流;程序执行的过程中,记录器将记录的执行信息首先记录到目标机的缓存区,等到应用程序执行完毕后,再由缓存区取出执行信息(执行日志)进行日志上传,日志上传完毕后,在宿主机端进行日志保存。
[0077]上述步骤33中,所述日志保存完毕后,由所述宿主机的历史分析器将所述执行信息(执行日志)进行分析和处理,即进行日志分析,得到应用程序的基于时间的事件流序列(引起任务间切换的事件信息),用于指导所述应用程序重放。通过所述任务编号10和程序计数器?(:的值,在对应任务编号10的任务处,在对应程序计数器值处设置断点。
[0078]上述步骤34中,由所述宿主机的重放器根据步骤33中得到的引起任务间切换的事件信息(日志分析结果)进行控制,在目标机的应用程序的相应?处设置断点,完成重放程序过程的初始化(即重放器重建任务所述目标机的应用程序的事件发生点设置断点由调试器完成。所述切换任务信息的获取过程为:若同步事件信息或异步事件信息的后面为一条所述任务切换信息,则此同步事件或异步事件引起了任务切换,所述应用程序执行完所述同步事件或异步事件后,发送所述切换任务信息。
[0079]上述步骤35中,由所述重放器启动目标机的应用程序再次执行(重放器恢复任务执行),在程序执行遇到断点后,由重放器根据步骤33中得到的引起任务间切换的事件信息的分析结果(日志分析结果),得到切换任务信息,对程序执行进行相应处理(判断是否进行任务切换,若是则切换至相应的任务,否则不进行任务切换),控制目标机的程序执行,直到程序执行结束。在重放阶段借助调试器(开发工具中的调试器)设置断点以及来控制应用程序按照程序原有执行状态执行,从而实现应用程序的重放;可以通过控制任务的挂起和恢复,使应用程序按照原执行顺序执行,从而实现程序的重放,如图7所示。
[0080]上述步骤331中,通过排序得到了事件的时间流。
[0081]上述步骤332中,由于执行信息为记录所有任务的执行信息,而关注的只是应用程序中的所有任务,因此要剔除这些与应用任务无关的信息。
[0082]上述步骤333中,在执行信息中记录了所有可能引起任务切换的事件信息,但这些事件不一定会真正引起任务切换,因此需要将那些真正引起任务间切换的事件剥离出来,以便指导应用程序的重放。引起任务间切换的事件为:所述事件的后面一条所述任务切换信息,因为只要事件的发生引起了切换,在执行信息中该事件信息后面就紧跟着一条任务切换信息。
[0083]该方法通过对目标应用程序的执行过程进行记录和追踪,即主要通过插粧探针来记录系统的任务调度、任务之间的通信及1/0等操作,然后在相同的输入条件下根据记录的执行信息来使得目标程序的运行情况得以再现。对于嵌入式实时系统,控制流需要记录应用程序中任务的切换顺序以及影响任务切换的各个事件,如信号量的获取与释放、消息的接收与发送、任务的延时等同步事件以及时钟中断等异步事件。
[0084]本发明的方法在宿主机和目标机建立架构,其中目标机的记录器的开启由宿主机控制开启记录器而完成,所述宿主机将所述执行信息进行分析和处理,由宿主机设置断点后,再控制目标机设置断点,目标机的应用程序执行过程中,遇到断点,由宿主机根据所述执行信息进行处理,控制目标机应用程序的任务切换,本发明的方法的一个较佳实施例的流程图如图2所示。
[0085]本发明还公开了一种应用程序重放系统,如图8所示,包括宿主机和目标机;所述宿主机设置历史分析器和重放器;所述目标机设置记录器;所述记录器用于记录应用程序执行过程中的执行信息,并上传给所述宿主机;所述历史分析器用于将所述执行信息进行分析和处理后得到引起任务间切换的事件信息;所述重放器用于根据所述事件信息在所述应用程序对应的事件发生点设置断点、启动所述应用程序再次执行以及所述应用程序再次执行遇到断点,根据所述事件信息分析计算得到切换任务信息,并下发给所述目标机。
[0086]所述记录器包括在调度函数内设置探针,用于获取任务切换信息;在中断进入函数和中断退出函数处设置探针,用于获取异步事件信息;在信号量的获取函数和信号量的释放函数处设置探针,用于获取信号量的获取信息和信号量的释放信息;在消息的接收函数和消息的发送函数处设置探针,用于获取消息的接收信息和消息的发送信息;在任务延时函数处设置探针,用于所述任务的延时信息。获取所述任务切换信息包括获取事件类型、获取事件发生时的时间戳、获取切换前任务的上下文信息以及获取切换后任务的上下文信息;获取所述信号量的获取信息和信号量的释放信息均包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器的值、获取信号量编号10、获取信号量操作时的任务编号10以及获取事件计数值;获取所述消息的接收信息和消息的发送信息均包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器的值、获取消息队列编号10、获取事件发生时的任务编号10以及获取事件计数值;获取所述任务的延时信息包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器的值以获取及事件计数值。
[0087]本发明的系统用于实现本法买那个的方法。
[0088]该发明不需要特殊的硬件和软件的支持,在现有开发环境的基础上实现了应用程序的执行重放,有效降低了时间和空间的消耗,尤其大大降低了目标机中时间与空间的消耗。
[0089]以上实施方式仅用于说明本发明,而非对本发明的限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行各种组合、修改或者等同替换,都不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。
【权利要求】
1.一种应用程序重放方法,其特征在于,所述方法包括以下步骤: 51、目标机下载宿主机的应用程序; 52、在所述应用程序中插粧,获取并上传所述应用程序的执行信息到所述宿主机; 53、根据事件信息在所述应用程序的对应的事件发生点设置断点;所述事件信息由所述宿主机对所述执行信息进行分析和处理得到的,所述事件信息为引起任务间切换的信息; 54、重新启动应用程序,执行遇到所述断点时,根据切换任务信息切换所述应用程序的任务,实现所述应用程序按照原运行顺序执行;所述切换任务信息由所述宿主机根据所述事件信息分析计算得到。
2.根据权利要求1所述的方法,其特征在于,获取所述执行信息包括获取控制流信息和获取数据流信息; 其中,获取所述控制流信息包括获取任务切换信息、获取同步事件信息和获取异步事件信息;获取所述任务切换信息为在调度函数内设置探针实现;获取所述同步事件信息为在相应的函数处设置探针实现;获取所述异步事件信息为在中断进入函数和中断退出函数处设置探针实现; 获取所述数据流信息包括获取外部输入的数据信息和获取任务间传递的数据信息,通过在发生数据接收处设置探针实现。
3.根据权利要求2所述的方法,其特征在于,获取所述同步事件信息包括获取信号量的获取信息、获取信号量的释放信息、获取消息的接收信息、获取消息的发送信息以及获取任务的延时信息;其中,获取所述信号量的获取信息和信号量的释放信息为分别在信号量的获取函数和信号量的释放函数处设置探针来实现;获取所述消息的接收信息和消息的发送信息为分别在消息的接收函数和消息的发送函数处设置探针实现;获取所述任务的延时信息为在任务延时函数处设置探针实现。
4.根据权利要求3所述的方法,其特征在于,获取所述任务切换信息包括获取事件类型、获取事件发生时的时间戳、获取切换前任务的上下文信息以及获取切换后任务的上下文信息; 获取所述信号量的获取信息和信号量的释放信息均包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器PC的值、获取信号量编号ID、获取信号量操作时的任务编号ID以及获取事件计数值; 获取所述消息的接收信息和消息的发送信息均包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器PC的值、获取消息队列编号ID、获取事件发生时的任务编号ID以及获取事件计数值; 获取所述任务的延时信息包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器PC的值以获取及事件计数值。
5.根据权利要求1至4任一项所述的方法,其特征在于,得到引起任务间切换的所述事件信息的具体过程为: 531、所述宿主机将所述执行信息中的所有事件按照所述事件发生时的时间戳进行排序; 532、剔除与所述应用程序无关的事件的信息; S33、将引起任务间切换的事件剥离出来。
6.根据权利要求5所述的方法,其特征在于,所述步骤S4中,由所述宿主机根据所述步骤S3得到的事件信息,控制调试器在所述应用程序的事件发生点设置断点。
7.根据权利要求6所述的方法,其特征在于,在所步骤S3中,通过所述任务编号ID和程序计数器PC的值,在对应任务编号ID的任务处,在对应程序计数器PC值处设置断点。
8.根据权利要求7所述的方法,其特征在于,所述步骤S33中,引起任务间切换的事件为:所述事件的后面为一条所述任务切换信息。
9.根据权利要求8所述的方法,其特征在于,所述切换任务信息的获取过程为:若所述同步事件信息或异步事件信息的后面为一条所述任务切换信息,则此同步事件或异步事件引起了任务切换,所述应用程序执行完所述同步事件或异步事件后,发送所述切换任务信息。
10.一种应用程序重放系统,其特征在于,包括宿主机和目标机; 所述宿主机设置历史分析器和重放器;所述目标机设置记录器; 所述记录器用于记录应用程序执行过程中的执行信息,并上传给所述宿主机; 所述历史分析器用于将所述执行信息进行分析和处理后得到引起任务间切换的事件信息; 所述重放器用于根据所述事件信息在所述应用程序对应的事件发生点设置断点、启动所述应用程序再次执行以及所述应用程序再次执行遇到断点,根据所述事件信息分析计算得到切换任务信息,并下发给所述目标机。
11.根据权利要求10所述的系统,其特征在于,所述记录器包括在调度函数内设置探针,用于获取任务切换信息; 在中断进入函数和中断退出函数处设置探针,用于获取异步事件信息; 在信号量的获取函数和信号量的释放函数处设置探针,用于获取信号量的获取信息和信号量的释放信息; 在消息的接收函数和消息的发送函数处设置探针,用于获取消息的接收信息和消息的发送信息; 在任务延时函数处设置探针,用于所述任务的延时信息。
12.根据权利要求11所述的系统,其特征在于,获取所述任务切换信息包括获取事件类型、获取事件发生时的时间戳、获取切换前任务的上下文信息以及获取切换后任务的上下文信息; 获取所述信号量的获取信息和信号量的释放信息均包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器PC的值、获取信号量编号ID、获取信号量操作时的任务编号ID以及获取事件计数值; 获取所述消息的接收信息和消息的发送信息均包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器PC的值、获取消息队列编号ID、获取事件发生时的任务编号ID以及获取事件计数值; 获取所述任务的延时信息包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器PC的值以获取及事件计数值。
【文档编号】G06F9/44GK104461521SQ201410693931
【公开日】2015年3月25日 申请日期:2014年11月26日 优先权日:2014年11月26日
【发明者】姜博, 徐晓丹, 龙翔, 马春雷, 高小鹏, 万寒 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1