一种应用运行状态的检测方法及设备技术

技术编号:39570087 阅读:7 留言:0更新日期:2023-12-03 19:21
本申请提出一种应用运行状态的检测方法及设备,涉及电子技术领域,用于解决应用线程的阻塞可能无法被检测到,导致故障问题上报遗漏的问题。该方法应用于电子设备,包括:在目标应用启动之后,创建与目标应用对应的监测线程;创建与目标应用对应的监测线程;通过监测线程添加应用线程监视器实例;在监测线程的运行过程中,电子设备通过应用线程监视器实例监控目标应用的第一线程的运行状态;第一线程包括目标应用中除监测线程以外的线程;运行状态包括正常或异常;在基于应用线程监视器实例确定第一线程的运行状态异常的情况下,执行线程异常处理操作。异常处理操作。异常处理操作。

【技术实现步骤摘要】
一种应用运行状态的检测方法及设备


[0001]本申请涉及电子
,尤其涉及一种应用运行状态的检测方法及设备。

技术介绍

[0002]部分较为大型的游戏应用的开发用到了游戏引擎(如Unity3d,UE4等),在这部分游戏应用的运行过程中,会启动相对应的游戏引擎线程(如UnityMain、MainThread

UE4)来进行界面绘制。这些线程与界面的绘制相关,当这些线程发生阻塞时,可能会导致画面卡死。
[0003]然而,相关技术中,终端的系统通常只对应用的主线程进行监控,并在检测到应用的主线程发生阻塞时生成提示信息,并且将这一阻塞导致的故障上报服务器。由于上述游戏引擎线程不属于应用主线程,因此,这些线程发生阻塞时,终端可能无法检测到发生故障问题,导致故障问题上报的遗漏。

技术实现思路

[0004]本申请实施例提供一种应用运行状态的检测方法及设备,用于解决应用线程的阻塞可能无法被检测到,导致故障问题上报遗漏的问题。
[0005]为达到上述目的,本申请的实施例采用如下技术方案:
[0006]第一方面,提供了一种应用运行状态的检测方法,该方法应用于电子设备,电子设备安装有目标应用;该方法包括:
[0007]目标应用启动。电子设备创建与目标应用对应的监测线程;然后,电子设备通过监测线程添加应用线程监视器实例。在监测线程的运行过程中,电子设备可以通过应用线程监视器实例监控目标应用的第一线程的运行状态。其中,第一线程包括目标应用中除监测线程以外的线程,这样,使电子设备在目标应用的运行过程中,可以通过监测线程对目标应用的线程的运行状态进行监控,包括非应用主线程。其中,上述运行状态包括正常和异常。并且,电子设备可以在基于应用线程监视器实例确定第一线程的运行状态异常的情况下,执行线程异常处理操作。
[0008]在该方案中,电子设备可以通过监测线程实现监控非应用主线程的运行状态进行监控,从而可以更全面的检测出目标应用的运行状态发生异常的故障情况,从而减少线程异常的检测和上报的遗漏问题。
[0009]在一些可能的实施方式中,第一线程包括多个渲染线程。在该实施方式中,在监测线程的运行过程中,电子设备具体可以通过应用线程监视器实例分别监控各渲染线程的运行状态。进一步的,电子设备可以在基于应用线程监视器实例确定任意一个渲染线程的运行状态异常的情况下,执行线程异常处理操作。这样,可以更好的监控目标应用各线程的运行状态,减少线程异常遗漏。
[0010]在一些可能的实施方式中,第一线程包括多个渲染线程。在该实施方式中,在监测线程的运行过程中,电子设备可以分别统计各渲染线程调用绘制接口的次数,然后根据渲
染线程调用绘制接口的次数,从渲染线程中确定调用绘制接口次数最多的主渲染线程。之后,电子设备可以通过获取该主渲染线程的运行状态来代表其他渲染线程的运行状态。在该实施方式中,电子设备具体可以在基于应用线程监视器实例确定主渲染线程的运行状态异常的情况下,执行线程异常处理操作。这样,可以减少监测线程的监控线程运行状态的工作量,提高监控线程的运行状态的效率。
[0011]在一些可能的实施方式中,上述通过应用线程监视器实例获取主渲染线程的运行状态,具体可以包括:通过应用线程监视器实例获取主渲染线程的线程状态参数;然后根据线程状态参数,确定主渲染线程的运行状态。其中,线程状态参数用于指示主渲染线程的线程状态,线程状态包括正在运行状态或者可运行状态、睡眠状态、磁盘休眠状态、停止状态、僵滞状态和消亡状态。在该实施方式中,可以直接通过获取主渲染线程的线程状态,来确定主渲染线程是否运行正常。这样,方便快捷的判断主渲染线程的运行状态,便于在主渲染线程运行异常时执行相应操作。
[0012]在一些可能的实施方式中,上述根据线程状态参数,确定主渲染线程的运行状态,具体可以包括:若线程状态参数指示主渲染线程的线程状态为磁盘休眠状态、僵滞状态或者消亡状态,则确定主渲染线程的运行状态异常。
[0013]在一些可能的实施方式中,上述通过应用线程监视器实例获取主渲染线程的运行状态,具体可以包括:通过应用线程监视器实例获取主渲染线程的第一运行时间。然后,电子设备将第一运行时间与上一次获取的主渲染线程的第二运行时间进行比较,确定主渲染线程的运行状态。在该实施方式中,可以通过分析主渲染线程的运行时间是否在持续增长来确定主渲染线程的运行状态,便于在主渲染线程运行异常时执行相应操作。
[0014]在一些可能的实施方式中,上述将第一运行时间与上一次获取的主渲染线程的第二运行时间进行比较,确定主渲染线程的运行状态,具体可以包括:若第一运行时间与第二运行时间相同,则确定主渲染线程的运行状态异常。
[0015]在一些可能的实施方式中,上述通过应用线程监视器实例获取主渲染线程的运行状态,具体可以包括:电子设备通过应用线程监视器实例获取主渲染线程调用绘制接口的第一次数。然后电子设备将第一次数与上一次获取的主渲染线程调用绘制接口的第二次数进行比较,确定主渲染线程的运行状态。在该方案中,可以通过分析部分目标应用中主渲染线程调用绘制接口的次数,来确定主渲染线程的运行状态,便于在主渲染线程运行异常时执行相应操作。
[0016]在一些可能的实施方式中,上述将第一次数与上一次获取的主渲染线程调用绘制接口的第二次数进行比较,确定主渲染线程的运行状态,具体可以包括:若第一次数与第二次数相同,则确定主渲染线程的运行状态异常。
[0017]在一些可能的实施方式中,上述在基于应用线程监视器实例确定第一线程的运行状态异常的情况下,执行线程异常处理操作,具体可以包括:在基于应用线程监视器实例确定第一线程的运行状态异常的情况下,生成提示信息;提示信息用于提示第一线程的运行状态异常。这样,可以快速的提醒用户执行相应操作。
[0018]在一些可能的实施方式中,上述在基于应用线程监视器实例确定第一线程的运行状态异常的情况下,执行线程异常处理操作,具体可以包括:在基于应用线程监视器实例确定第一线程的运行状态异常的情况下,触发第一线程的异常上报事件;异常上报事件用于
向服务器上报第一线程的运行状态异常。这样,可以便于相关人员收集故障问题,对其进行分析并给出解决方案。
[0019]在一些可能的实施方式中,上述在基于应用线程监视器实例确定第一线程的运行状态异常的情况下,执行线程异常处理操作,具体可以包括:在基于应用线程监视器实例确定第一线程的运行状态异常的情况下,执行对第一线程的故障恢复操作。这样,可以快速的对第一线程异常尝试恢复。
[0020]在一些可能的实施方式中,监测线程和应用线程监视器实例位于framework层。并且,电子设备通过应用线程监视器实例监控目标应用的第一线程的运行状态,包括:电子设备通过应用线程监视器实例调用native层的检测算法,监控目标应用的第一线程的运行状态。检测算法位于native层,即检测算法使用的C/C++语言。这样,可以更好达到检测的目的。
[0021]在本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种应用运行状态的检测方法,其特征在于,所述方法应用于电子设备,所述电子设备安装有目标应用;所述方法包括:在目标应用启动之后,创建与所述目标应用对应的监测线程;通过所述监测线程添加应用线程监视器实例;在所述监测线程的运行过程中,所述电子设备通过所述应用线程监视器实例监控所述目标应用的第一线程的运行状态;所述第一线程包括所述目标应用中除所述监测线程以外的线程;所述运行状态包括正常或异常;在基于所述应用线程监视器实例确定所述第一线程的运行状态异常的情况下,执行线程异常处理操作。2.根据权利要求1所述的方法,其特征在于,所述第一线程包括多个渲染线程;所述在所述监测线程的运行过程中,所述电子设备通过所述应用线程监视器实例监控所述目标应用的第一线程的运行状态,包括:在所述监测线程的运行过程中,所述电子设备通过所述应用线程监视器实例分别监控各所述渲染线程的运行状态;所述在基于所述应用线程监视器实例确定所述第一线程的运行状态异常的情况下,执行线程异常处理操作,包括:在基于所述应用线程监视器实例确定任意一个所述渲染线程的运行状态异常的情况下,执行所述线程异常处理操作。3.根据权利要求1所述的方法,其特征在于,所述第一线程包括多个渲染线程;所述在所述监测线程的运行过程中,所述电子设备通过所述应用线程监视器实例监控所述目标应用的第一线程的运行状态,包括:在所述监测线程的运行过程中,所述电子设备分别统计各所述渲染线程调用绘制接口的次数;根据所述渲染线程调用所述绘制接口的次数,从所述渲染线程中确定调用所述绘制接口次数最多的主渲染线程;通过所述应用线程监视器实例获取所述主渲染线程的运行状态;所述在基于所述应用线程监视器实例确定所述第一线程的运行状态异常的情况下,执行线程异常处理操作,包括:在基于所述应用线程监视器实例确定所述主渲染线程的运行状态异常的情况下,执行所述线程异常处理操作。4.根据权利要求3所述的方法,其特征在于,所述通过所述应用线程监视器实例获取所述主渲染线程的运行状态,包括:通过所述应用线程监视器实例获取所述主渲染线程的线程状态参数;所述线程状态参数用于指示所述主渲染线程的线程状态,所述线程状态包括正在运行状态或者可运行状态、睡眠状态、磁盘休眠状态、停止状态、僵滞状态和消亡状态;若所述线程状态参数指示所述主渲染线程的线程状态为磁盘休眠状态、僵滞状态或者消亡状态,则确定所述主渲染线程的运行状态异常。5.根据权利要求3所述的方法,其特征在于,所述通过所述应用线程监视器实例获取所述主渲染线程的运行状态,包括:
通过所述应用线程监视器实例获取所述主渲染线程的第一运行时间;将所述第一运行时间与上一次获取的所述主渲染线程的第二运行时间进行比较,确定所述主渲染线程的运行状态。6.根据权利要求5所述的方法,...

【专利技术属性】
技术研发人员:卢放
申请(专利权)人:荣耀终端有限公司
类型:发明
国别省市:

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

1