信息获取方法、装置、存储介质及设备制造方法及图纸

技术编号:23099069 阅读:21 留言:0更新日期:2020-01-14 20:35
本发明专利技术实施例公开了信息获取方法、装置、存储介质及设备。其中,该方法包括:检测到预设应用程序进入预设卡顿状态时,获取运行时对象的第一系统函数的指针,其中,第一系统函数包括当发生应用程序无响应事件时用于备份运行时信息的函数,通过运行时对象对第一系统函数进行调用,并向第一系统函数中传入输出流,获取输出流中包含的信息,以得到卡顿上下文信息。本发明专利技术实施例提供的技术方案,在检测到应用程序发生卡顿时,通过调用发生应用程序无响应事件时被系统调用的函数来获取卡顿上下文信息,可以突破系统限制而获取到更加全面的卡顿上下文信息,有助于准确定位并解决卡顿问题。

【技术实现步骤摘要】
信息获取方法、装置、存储介质及设备
本专利技术实施例涉及计算机
,尤其涉及信息获取方法、装置、存储介质及设备。
技术介绍
目前,智能终端已成为多数用户日常生活中必备的电子设备。随着智能终端技术和互联网的快速发展,智能终端中的功能也越来越完善,能够安装各种各样的应用程序,应用程序实现的功能也越来越复杂。在智能终端的使用过程中,应用程序的流畅性是用户关注的重点性能之一,而由于应用程序的复杂性对硬件资源的要求也越来越高,导致在智能终端上应用程序容易发生卡顿甚至无响应,严重影响用户体验。为了尽可能降低应用程序卡顿的发生,需要获取到应用程序发生卡顿时的相关信息进行分析,然而,相关技术中,所能够获取到的信息并不全面,需要改进。
技术实现思路
本专利技术实施例提供了信息获取方法、装置、存储介质及设备,可以优化应用程序发生卡顿时获取相关信息的方案。第一方面,本专利技术实施例提供了一种信息获取方法,该方法包括:检测到预设应用程序进入预设卡顿状态时,获取运行时对象的第一系统函数的指针,其中,所述第一系统函数包括当发生应用程序无响应事件时用于备份运行时信息的函数;通过所述运行时对象对所述第一系统函数进行调用,并向所述第一系统函数中传入输出流;获取所述输出流中包含的信息,以得到卡顿上下文信息。第二方面,本专利技术实施例提供了一种信息获取装置,该装置包括:函数指针获取模块,用于在检测到预设应用程序进入预设卡顿状态时,获取运行时对象的第一系统函数的指针,其中,所述第一系统函数包括当发生应用程序无响应事件时用于备份运行时信息的函数;函数调用模块,用于通过所述运行时对象对所述第一系统函数进行调用,并向所述第一系统函数中传入输出流;信息获取模块,用于获取所述输出流中包含的信息,以得到卡顿上下文信息。第三方面,本专利技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本专利技术实施例提供的信息获取方法。第四方面,本专利技术实施例提供了一种智能终端设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本专利技术实施例提供的信息获取方法。本专利技术实施例中提供的信息获取方案,检测到预设应用程序进入预设卡顿状态时,获取运行时对象的第一系统函数的指针,其中,第一系统函数包括当发生应用程序无响应事件时用于备份运行时信息的函数,通过运行时对象对所述第一系统函数进行调用,并向第一系统函数中传入输出流,获取输出流中包含的信息,以得到卡顿上下文信息。通过采用上述技术方案,在检测到应用程序发生卡顿时,通过调用发生应用程序无响应事件时被系统调用的函数来获取卡顿上下文信息,可以突破系统限制而获取到更加全面的卡顿上下文信息,有助于准确定位并解决卡顿问题。附图说明图1为本专利技术实施例一提供的一种信息获取方法的流程示意图;图2为本专利技术实施例二提供的一种信息获取方法的流程示意图;图3为本专利技术实施例三提供的一种信息获取方法的流程示意图;图4为本专利技术实施例三提供的针对高版本操作系统的信息获取方法的流程示意图;图5为本专利技术实施例三提供的针对低版本操作系统的信息获取方法的流程示意图;图6为本专利技术实施例四提供的一种信息获取装置的结构框图;图7为本专利技术实施例六提供的一种智能终端设备的结构框图。具体实施方式下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。此外,在不冲突的情况下,本专利技术中的实施例及实施例中的特征可以相互组合。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。实施例一图1为本专利技术实施例一提供的一种信息获取方法的流程示意图,该方法可以由信息获取装置执行,其中该装置可由软件和/或硬件实现,一般可集成在智能终端设备中。如图1所示,该方法包括:步骤101、检测到预设应用程序进入预设卡顿状态时,获取运行时对象的第一系统函数的指针,其中,所述第一系统函数包括当发生应用程序无响应事件时用于备份运行时信息的函数。示例性的,智能终端设备可包括智能手机、平板电脑、笔记本电脑、计算机以及智能家电等能够装载操作系统的设备。本专利技术实施例对智能终端设备中装载的操作系统类型不做限定,例如可以是安卓(Android)操作系统、窗口(Windows)操作系统以及Linux操作系统等等。示例性的,预设应用程序可以包括智能终端设备中安装的任意一个应用程序,或者可包括预先设定的部分应用程序。本专利技术实施例提供的技术方案可以利用软件开发工具包(SoftwareDevelopmentKit,SDK)来实现,由应用程序开发人员编写SDK,并在预设应用程序中接入该SDK,进而在SDK中实现本专利技术实施例的技术方案的相关功能。示例性的,预设卡顿状态可以是预先规定的应用程序的界面显示出现异常情况的状态,一般针对显示效果而言,其表现可以是用户界面切换停滞、缓慢或跳跃,用户界面无法与声音相匹配,用户界面中的内容出现拖影等现象,可以根据实际需求设置用于评估卡顿状态的指标,本专利技术实施例不做具体限定。可选的,可以基于应用程序的帧率评估卡顿状态,例如,获取预设应用程序在运行过程中的帧率,当检测到当前帧率小于预设帧率阈值时,确定检测到所述预设应用程序进入预设卡顿状态。预设帧率阈值可以自由设置,例如可以是30Hz,即30帧每秒。另外,还可根据画面绘制时长、相邻两帧画面的绘制间隔以及其他项目等判断卡顿状态。相关技术中,当应用程序发生卡顿时,可以通过暴露出的接口获取到应用程序的主线程的上下文信息,但这些信息并不足以用于分析并解决卡顿问题。另外,在应用程序发生无响应(ApplicationNotResponding,ANR)事件时,操作系统内部会所生成追溯文件,如Android系统中的traces.txt文件,追溯文件中会记录发生ANR时当前进程的相关信息,如当前进程的堆栈以及当前虚拟机的一些状态信息等,形成trace信息。然而,智能终端设备中的应用程序,尤其是第三方应用程序,是没有该文件的读写权限的,因此,也不能够获取到追溯文件中的相关信息用于分析和定位卡顿问题。本专利技术实施例中,可以在预设应用程序发生卡顿时,突破系统对应用程序的限制,模拟出ANR发生时的trace信息收集场景,进而更加全面地获取卡顿上下文信息,用于帮助预设应用程序有针对性地解决卡顿问题。在检测到预设应用程序进入预设卡顿状态时,本文档来自技高网...

【技术保护点】
1.一种信息获取方法,其特征在于,包括:/n检测到预设应用程序进入预设卡顿状态时,获取运行时对象的第一系统函数的指针,其中,所述第一系统函数包括当发生应用程序无响应事件时用于备份运行时信息的函数;/n通过所述运行时对象对所述第一系统函数进行调用,并向所述第一系统函数中传入输出流;/n获取所述输出流中包含的信息,以得到卡顿上下文信息。/n

【技术特征摘要】
1.一种信息获取方法,其特征在于,包括:
检测到预设应用程序进入预设卡顿状态时,获取运行时对象的第一系统函数的指针,其中,所述第一系统函数包括当发生应用程序无响应事件时用于备份运行时信息的函数;
通过所述运行时对象对所述第一系统函数进行调用,并向所述第一系统函数中传入输出流;
获取所述输出流中包含的信息,以得到卡顿上下文信息。


2.根据权利要求1所述的方法,其特征在于,当前操作系统为安卓操作系统,所述第一系统函数为DumpForSigQuit函数。


3.根据权利要求1所述的方法,其特征在于,所述获取运行时对象的第一系统函数的指针,包括:
打开第一动态链接库,并获取所述第一动态链接库中的运行时对象的指针以及所述运行时对象的第一系统函数的指针。


4.根据权利要求1所述的方法,其特征在于,检测到预设应用程序发生卡顿时,获取运行时对象的第一系统函数的指针,包括:
检测到预设应用程序发生卡顿时,创建所述预设应用程序的第一进程的子进程,所述第一进程成为父进程;
利用所述子进程获取运行时对象的第一系统函数的指针;
所述通过所述运行时对象对所述第一系统函数进行调用,并向所述第一系统函数中传入输出流,包括:
利用所述子进程通过所述运行时对象对所述第一系统函数进行调用,并向所述第一系统函数中传入输出流;
所述获取所述输出流中包含的信息,以得到卡顿上下文信息,包括:
利用所述子进程获取所述输出流中包含的信息;
利用所述子进程获取所述父进程的所有线程的预设类型的堆栈信息;
根据所述输出流中包含的信息和所述预设类型的堆栈信息得到卡顿上下文信息。


5.根据权利要求4所述的方法,其特征在于,所述预设类型的堆栈信息包括内核堆栈信息和本地堆栈信息,利用所述子进程获取到的所述输出流中包含的信息中包括所述父进程的所有线程的Java层堆栈信息。


6.根据权利要求5所述的方法,其特征在于,利用所述子进程获取所述父进程的所有线程的内核堆栈信息,包括:
利用所述子进程获取运行时对象的线程列表对象的指针,并遍历所述父进程的所有线程,通过读取所有进程分别对应的预设堆栈文件目录来获取对应的内核堆栈信息。


7.根据权利要求5所述的方法,其特征在于...

【专利技术属性】
技术研发人员:刘宇轩彭新怀
申请(专利权)人:广州市百果园信息技术有限公司
类型:发明
国别省市:广东;44

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

1