一种应用程序重放方法及系统技术方案

技术编号:11204603 阅读:76 留言:0更新日期:2015-03-26 12:43
本发明专利技术公开了一种应用程序重放方法及系统,所述方法包括以下步骤:S1、目标机下载宿主机的应用程序;S2、在所述应用程序中插桩,获取并上传所述应用程序的执行信息;S3、根据事件信息在所述应用程序的对应的事件发生点设置断点;所述事件信息由所述宿主机对所述执行信息进行分析和处理得到的,所述事件信息为引起任务间切换的信息;S4、重新启动应用程序,执行遇到所述断点时,根据切换任务信息切换所述应用程序的任务,实现所述应用程序按照原运行顺序执行;所述切换任务信息由所述宿主机根据所述事件信息分析计算得到。本发明专利技术通过插桩探针来记录应用程序的执行信息,大大减少了时间和空间的消耗,可以用在嵌入式实时系统等所有的系统中。

【技术实现步骤摘要】

本专利技术涉及执行重放
,更具体涉及一种应用程序重放方法及系统
技术介绍
随着用户对软件系统性能要求的提高,并发技术得到了广泛使用。但是并发技术的使用在提高软件性能的同时,也给软件开发人员的开发带来了很大的困难,尤其是对于嵌入式软件系统,由于并发程序执行的不确定性、错误的不可再现性,使得传统的顺序程序调试方法变得不再适用。在并发程序的开发过程中,通常使用执行重放技术来实现软件调试时的错误重现以及程序的重执行,即通过对目标程序的执行情况进行记录追踪,之后在相同的输入条件下,根据记录下来的执行信息来使得目标程序的运行情况再现。执行重放技术的研究对于并发程序的调试有很重要的意义。目前,对于并发程序的执行重放,国内外已经有人提出了一些方法,主要包括:一种基于内容的执行重放方法Recap,通过追踪所有共享内存中的数据来实现程序的重放。该方法的优点是能够单独重放系统中特定的某个或几个进程,但由于需要存储所有的数据操作,导致时间和空间开销很大,实用性较弱,很难用于嵌入式实时系统。此外,还有一类基于顺序的执行重放方法,这类方法通过特殊的方式来保证重放状态下软件系统的操作顺序与执行时的系统操作顺序相一致,从而达到重放错误以及程序冲执行的目的。与基于内容的方法相比,这类方法可以大大减少时间和空间开销。目前大多数的执行重放方法都属于这类方法,典型的有以下几种:LeBlanc提出的Instant Replay方法旨在实现CREW(Concurrent Reader&Exclusive Write)并行系统的故障重现。该方法为每个共享对象添加版本号,每个线程都将访问共享内存对象时的版本号记录到日志文件来保证重放时的确定性。这种方法虽然能够在一定程度上减少空间开销,但是缺点是只能应用于满足CREW性质的UNIX系统。FDR方法采用增量检查点机制,通过把程序分为若干个重放间隔,每个间隔只记录这个内存位置更新之前存放的值,从而实现程序的确定性重放,但是这种方法需要特殊硬件的支持。现有的这些执行重放方法对硬件资源的消耗非常巨大,尤其对于嵌入式实时系统,根本不能应用,因为嵌入式实时系统的硬件资源有限,无法直接存储大量的日志信息;而且嵌入式实时系统的实时中断和任务实时性要求也与不同系统有很多区别,在执行重放系统执行时还需要考虑任务的调度以及任务间的同步和通信等情况。综上所述,现有的执行重放方法,时间和空间的消耗很大,普遍适用性不强。
技术实现思路
(一)要解决的技术问题本专利技术要解决的技术问题是如何降低程序重放过程中对于时间和空间的消耗。(二)技术方案为了解决上述技术问题,本专利技术提供了一种应用程序重放方法,所述方法包括以下步骤:S1、目标机下载宿主机的应用程序;S2、在所述应用程序中插桩,获取并上传所述应用程序的执行信息到所述宿主机;S3、根据事件信息在所述应用程序的对应的事件发生点设置断点;所述事件信息由所述宿主机对所述执行信息进行分析和处理得到的,所述事件信息为引起任务间切换的信息。S4、重新启动应用程序,执行遇到所述断点时,根据切换任务信息切换所述应用程序的任务,实现所述应用程序按照原运行顺序执行;所述切换任务信息由所述宿主机根据所述事件信息分析计算得到。优选地,获取所述执行信息包括获取控制流信息和获取数据流信息;其中,获取所述控制流信息包括获取任务切换信息、获取同步事件信息和获取异步事件信息;获取所述任务切换信息为在调度函数内设置探针实现;获取所述同步事件信息为在相应的函数处设置探针实现;获取所述异步事件信息为在中断进入函数和中断退出函数处设置探针实现;获取所述数据流信息包括获取外部输入的数据信息和获取任务间传递的数据信息,通过在发生数据接收处设置探针实现。优选地,获取所述同步事件信息包括获取信号量的获取信息、获取信号量的释放信息、获取消息的接收信息、获取消息的发送信息以及获取任务的延时信息;其中,获取所述信号量的获取信息和信号量的释放信息为分别在信号量的获取函数和信号量的释放函数处设置探针来实现;获取所述消息的接收信息和消息的发送信息为分别在消息的接收函数和消息的发送函数处设置探针实现;获取所述任务的延时信息为在任务延时函数处设置探针实现。优选地,获取所述任务切换信息包括获取事件类型、获取事件发生时的时间戳、获取切换前任务的上下文信息以及获取切换后任务的上下文信息;获取所述信号量的获取信息和信号量的释放信息均包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器PC的值、获取信号量编号ID、获取信号量操作时的任务编号ID以及获取事件计数值;获取所述消息的接收信息和消息的发送信息均包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器PC的值、获取消息队列编号ID、获取事件发生时的任务编号ID以及获取事件计数值;获取所述任务的延时信息包括获取事件类型、获取事件发生时的时间戳、获取事件发生时程序计数器PC的值以获取及事件计数值。优选地,得到引起任务间切换的所述事件信息的具体过程为:S31、所述宿主机将所述执行信息中的所有事件按照所述事件发生时的时间戳进行排序;S32、剔除与所述应用程序无关的事件的信息;S33、将引起任务间切换的事件剥离出来。优选地,所述步骤S4中,由所述宿主机根据所述步骤S3得到的事件信息,在所述应用程序的事件发生点设置断点。优选地,在所述应用程序的事件发生点设置断点由调试器完成。优选地,在所步骤S3中,通过所述任务编号ID和程序计数器PC的值,在对应任务编号ID的任务处,在对应程序计数器PC值处设置断点。优选地,所述切换任务信息的获取过程为:若同步事件信息或异步事件信息的后面为一条所述任务切换信息,则此同步事件或异步事件引起了任务切换,所述应用程序执行完所述同步事件或异步事件后,发送所述切换任务信息。优选地,所述步骤S33中,引起任务间切换的事件为:所述事件的后面一条所述任务切换信息。一种应用程序重放系统,包括宿主机和目标机;所述宿主机设置历史分析器和重放器;所述目标机设置记录器;所述记录器用于记录应用程序执行过程中的执行信息,并上传给所述宿主机;所述历史分析器用于将所述执行信息进行分析和处理后得到引起任务间切换的事件信本文档来自技高网
...
一种应用程序重放方法及系统

【技术保护点】
一种应用程序重放方法,其特征在于,所述方法包括以下步骤:S1、目标机下载宿主机的应用程序;S2、在所述应用程序中插桩,获取并上传所述应用程序的执行信息到所述宿主机;S3、根据事件信息在所述应用程序的对应的事件发生点设置断点;所述事件信息由所述宿主机对所述执行信息进行分析和处理得到的,所述事件信息为引起任务间切换的信息;S4、重新启动应用程序,执行遇到所述断点时,根据切换任务信息切换所述应用程序的任务,实现所述应用程序按照原运行顺序执行;所述切换任务信息由所述宿主机根据所述事件信息分析计算得到。

【技术特征摘要】
1.一种应用程序重放方法,其特征在于,所述方法包括以下步骤:
S1、目标机下载宿主机的应用程序;
S2、在所述应用程序中插桩,获取并上传所述应用程序的执行信
息到所述宿主机;
S3、根据事件信息在所述应用程序的对应的事件发生点设置断点;
所述事件信息由所述宿主机对所述执行信息进行分析和处理得到的,
所述事件信息为引起任务间切换的信息;
S4、重新启动应用程序,执行遇到所述断点时,根据切换任务信
息切换所述应用程序的任务,实现所述应用程序按照原运行顺序执行;
所述切换任务信息由所述宿主机根据所述事件信息分析计算得到。
2.根据权利要求1所述的方法,其特征在于,获取所述执行信息
包括获取控制流信息和获取数据流信息;
其中,获取所述控制流信息包括获取任务切换信息、获取同步事
件信息和获取异步事件信息;获取所述任务切换信息为在调度函数内
设置探针实现;获取所述同步事件信息为在相应的函数处设置探针实
现;获取所述异步事件信息为在中断进入函数和中断退出函数处设置
探针实现;
获取所述数据流信息包括获取外部输入的数据信息和获取任务间
传递的数据信息,通过在发生数据接收处设置探针实现。
3.根据权利要求2所述的方法,其特征在于,获取所述同步事件
信息包括获取信号量的获取信息、获取信号量的释放信息、获取消息
的接收信息、获取消息的发送信息以及获取任务的延时信息;其中,
获取所述信号量的获取信息和信号量的释放信息为分别在信号量的获
取函数和信号量的释放函数处设置探针来实现;获取所述消息的接收
信息和消息的发送信息为分别在消息的接收函数和消息的发送函数处
设置探针实现;获取所述任务的延时信息为在任务延时函数处设置探

\t针实现。
4.根据权利要求3所述的方法,其特征在于,获取所述任务切换
信息包括获取事件类型、获取事件发生时的时间戳、获取切换前任务
的上下文信息以及获取切换后任务的上下文信息;
获取所述信号量的获取信息和信号量的释放信息均包括获取事件
类型、获取事件发生时的时间戳、获取事件发生时程序计数器PC的值、
获取信号量编号ID、获取信号量操作时的任务编号ID以及获取事件计
数值;
获取所述消息的接收信息和消息的发送信息均包括获取事件类型、
获取事件发生时的时间戳、获取事件发生时程序计数器PC的值、获取
消息队列编号ID、获取事件发生时的任务编号ID以及获取事件计数值;
获取所述任务的延时信息包括获取事件类型、获取事件发生时的
时间戳、获取事件发生时程序计数器PC的值以获取及事件计数值。
5.根据权利要求1至4任一项所述的方法,其特征在于,得到引
起任务间切换的所述事件信息的具体过程为:
S31、所述宿主机将所述执行信息中的所有事件按照所述事件发生
时的时间戳进行排序;
S32、剔除与所述应用程序无关的事件的...

【专利技术属性】
技术研发人员:姜博徐晓丹龙翔马春雷高小鹏万寒
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1