跟踪流程轨迹的方法、装置以及存储装置制造方法及图纸

技术编号:18763705 阅读:68 留言:0更新日期:2018-08-25 10:27
本申请公开一种跟踪流程轨迹方法、装置以及存储装置,具体包括:启动应用程序的进程及对应的虚拟机;在虚拟机中运行进程并获取进程的流程轨迹,其中虚拟机的调用命令经过挂钩处理,挂钩处理后的调用命令在调用目标函数之前和/或之后输出对应的调用日志,流程轨迹由进程运行过程中挂钩处理后的调用命令输出的调用日志组成。通过这个方法,可以快速的对应用程序中的整个运行流程进行轨迹输出,从而便于进行问题的定位。

【技术实现步骤摘要】
跟踪流程轨迹的方法、装置以及存储装置
本申请涉及到流程轨迹,特别是涉及一种跟踪流程轨迹的方法、装置以及存储装置。
技术介绍
目前分析安卓(Android)应用的方法,除了用集成开发环境(IDE)进行调试应用逻辑外,就只能通过程序日志来分析。为了获取程序日志开发人员需要先在应用内部的适当位置添加日志。实际应用中经常会出现误判,即应用在出问题的时候走的流程恰好不在输出了日志的流程内,无法从日志得到问题信息。在这种情况下,开发人员只能尝试扩大范围,在应用内部的更多位置/其他位置添加日志输出,可能需要重复很多次添加日志-运行应用以获取日志的过程,才能定位到问题点,分析效率低下。
技术实现思路
本申请提供一种跟踪流程轨迹的方法、装置以及存储装置,能够解决现有技术中在应用内部添加日志以获取程序日志带来的分析效率低下的问题。本申请采用的一个技术方案是:提供一种跟踪流程轨迹的方法,包括步骤:启动应用程序的进程及对应的虚拟机;在所述虚拟机中运行所述进程并获取所述进程的流程轨迹,其中所述虚拟机的调用命令经过挂钩处理,所述挂钩处理后的调用命令在调用目标目标函数之前和/或之后输出对应的调用日志,所述流程轨迹由所述进程运行过程中所述挂钩处理后的调用命令输出的所述调用日志组成。为解决上述技术问题,本申请采用的另一个技术方案是:一种跟踪流程轨迹的装置,其特征在于,所述装置包括处理器以及存储器,所述处理器连接所述存储器,所述处理器用于启动应用程序的进程及对应的虚拟机;在所述虚拟机中运行所述进程并获取所述进程的流程轨迹,其中所述虚拟机的调用命令经过挂钩处理,所述挂钩处理后的调用命令在调用目标函数之前和/或之后输出对应的调用日志,所述流程轨迹由所述进程运行过程中所述挂钩处理后的调用命令输出的所述调用日志组成。为解决上述技术问题,本申请采用的又一个技术方案是:提供一种存储装置,存储有能够实现上述任一方法项的程序文件。本申请的有益效果是:提供一种跟踪流程轨迹的方法、装置以及存储装置,通过虚拟机中的调用命令可以去调用应用程序的函数,在调用命令经过挂钩处理后,使得在调用函数的过程中,可以同时输出调用函数的调用信息,这些调用信息组成应用程序的流程轨迹,通过这个方法,可以快速的对应用程序中的整个运行流程进行轨迹输出,从而便于进行问题的定位,提高效率。附图说明图1是本申请跟踪流程轨迹的方法第一实施方式的流程示意图;图2是是本请跟踪流程轨迹方法使用未经过挂钩处理的调用命令来调用函数的流程示意图;图3是本请跟踪流程轨迹方法使用经过挂钩处理的调用命令来调用函数的流程示意图;图4是本申请跟踪流程轨迹方法第二实施方式的流程示意图;图5是本申请跟踪流程轨迹方法第三实施方式的流程示意图;图6是本申请跟踪流程轨迹的方法的运行流程示意图;图7是本申请跟踪流程轨迹的装置的一实施方式的结构示意图;图8是本申请存储装置一实施方式的结构示意图。实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。请参阅图1,图1本申请跟踪流程轨迹的方法第一实施方式的流程示意图。其中,且具体的跟踪流程轨迹的方法包括以下步骤:S11,启动应用程序的进程及对应的虚拟机。一般而言,在安卓系统中,一个应用程序运行在至少一个进程中,每个进程独立运行在一个对应的虚拟机(JavaVirtualMachine)中,在应用程序的启动过程中,通过AMS(ActivityManagerService)来为应用程序分配进程和对应的虚拟机。由于创造一个新虚拟机是非常耗时,为了加快应用程序的启动速度,安卓系统采用了复制的方式。在系统开机启动时,会启动一个原始(Zygote)进程,这个进程会初始化系统的第一个虚拟机,并预加载通用资源。当需要启动一个应用程序时,可以通过复制原始进程及其对应的虚拟机得到一个新虚拟机以及新进程,并将这个新虚拟机以及新进程与该应用程序进行绑定,从而使得这个新进程能够在新虚拟机上运行该应用程序。S12,在虚拟机中运行进程并获取进程的流程轨迹,其中虚拟机的调用命令经过挂钩处理,挂钩处理后的调用命令在调用目标函数之前和/或之后输出对应的调用日志,流程轨迹由进程运行过程中挂钩处理后的调用命令输出的调用日志组成。具体的实施例中,虚拟机是提供一个载体,使得进程在虚拟机上运行应用程序,对于一个应用程序而言,是通过进程来对这个应用程序的目标函数进行调用从而实现这些目标函数,进而完成应用程序的运行。在虚拟机中,存在调用命令,进程可以通过使用调用命令来调用目标函,在对这个调用命令进行挂钩处理(Hook)后,可以使得进程在调用各个目标函数时,同时可以输出这个目标函数之间和/或之后的调用日志,而流程轨迹具体就是通过这些调用日志所组成。挂钩处理,也被称为“替换”,是指通过一些方法获取到“原始目标实现的地址”,把它保存下来;用自己预先实现的另一个流程写入该目标地址,然后再在自己实现的流程内调用回这个原始的实现。这种做法是为了在原始目标被调用的过程前或后,可以执行自己编写的代码。由于这种做法是在原程序实现之后再植入进去的,对于原本程序整个流程来说是透明的,它不知道有这段被植入的代码的存在,所以不会影响到程序的调用以及执行。其中,在本实施例中,挂钩处理是指将这个调用命令进行保存,并将一个输出目标函数轨迹的程序流程写入这个调用命令的地址,从而实现了这个输出目标函数轨迹的程序流程,在去调用开始进行保存的调用命令,去对目标函数进行调用,也就是说,这个挂钩处理后调用命令不仅实现了原调用命令的调用目标函数的流程,还实现了输出目标函数轨迹的程序流程。请具体参阅图2以及图3,图2是未经过挂钩处理的调用命令来调用函数,图3是经过挂钩处理的调用命令来调用函数的流程示意图,显然可以看出,在经过挂钩处理后,通过调用命令在调用函数时,会输出包括这个函数的线程号,调用函数名字以及开始标记的调用日志,在结束调用后,会输出包括这个函数的线程号,调用函数名字以及结束标记的调用日志。图3中经过挂钩处理的调用命令在调用函数之前和之后都会输出调用日志,实际经过挂钩处理的调用命令也可以只在调用函数之前/之后输出调用日志。调用日志包括了调用命令的调用对象,即目标函数的名称,以及执行该调用命令的线程号,其中,进程是至少一个线程的集合,也就是说,一个进程包括至少一个线程,具体来调用应用程序里面的函数的就是线程,调用日志还可以包括了调用目标函数的开始标志或结束标志。而这些目标函数的调用日志就组成了这个应用程序的流程轨迹。上述实施例中,通过启动应用程序所对应的虚拟机,并在虚拟机通过挂钩处理后的调用命令来调用应用程序中的目标函数从而获取应用程序的流程轨迹。请参阅图4,图4是本申请跟踪流程轨迹的方法第二实施方式的流程示意图。且是在图1的步骤S11的进一步扩展,其中步骤包括:S111,对原始进程及对应的虚拟机进行复制得到新进程及对应的新虚拟机。在安卓服务中,一般而言,对应的每个应用程序都至少有一个进程以及一个独立的虚拟机来对应,所以在运行应用程序时,首先需要通过A本文档来自技高网...

【技术保护点】
1.一种跟踪流程轨迹的方法,其特征在于,包括步骤:启动应用程序的进程及对应的虚拟机;在所述虚拟机中运行所述进程并获取所述进程的流程轨迹,其中所述虚拟机的调用命令经过挂钩处理,所述挂钩处理后的调用命令在调用目标函数之前和/或之后输出对应的调用日志,所述流程轨迹由所述进程运行过程中所述挂钩处理后的调用命令输出的所述调用日志组成。

【技术特征摘要】
1.一种跟踪流程轨迹的方法,其特征在于,包括步骤:启动应用程序的进程及对应的虚拟机;在所述虚拟机中运行所述进程并获取所述进程的流程轨迹,其中所述虚拟机的调用命令经过挂钩处理,所述挂钩处理后的调用命令在调用目标函数之前和/或之后输出对应的调用日志,所述流程轨迹由所述进程运行过程中所述挂钩处理后的调用命令输出的所述调用日志组成。2.根据权利要求1所述的方法,其特征在于,所述启动应用程序的进程及对应的虚拟机包括:对原始进程及对应的虚拟机进行复制得到新进程及对应的新虚拟机;将所述新进程及所述新虚拟机与所述应用程序绑定。3.根据权利要求2所述的方法,其特征在于,所述新虚拟机的所述调用命令已经过所述挂钩处理。4.根据权利要求2所述的方法,其特征在于,所述新虚拟机的所述调用命令未经过所述挂钩处理,所述对原始进程及对应的虚拟机进行复制得到新进程及对应的新虚拟机之后进一步包括:对所述新虚拟机的所述调用命令进行所述挂钩处理。5.根据权利要求4所述的方法,其特征在于,所述对所述新虚拟机的所述调用命令进行所述挂...

【专利技术属性】
技术研发人员:涂斌健梁虹
申请(专利权)人:捷开通讯深圳有限公司
类型:发明
国别省市:广东,44

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

1