CN110704216A - 用于终端的应用程序无响应检测方法、装置及电子设备 - Google Patents

用于终端的应用程序无响应检测方法、装置及电子设备 Download PDF

Info

Publication number
CN110704216A
CN110704216A CN201910792406.0A CN201910792406A CN110704216A CN 110704216 A CN110704216 A CN 110704216A CN 201910792406 A CN201910792406 A CN 201910792406A CN 110704216 A CN110704216 A CN 110704216A
Authority
CN
China
Prior art keywords
application program
terminal
response
target application
tracking log
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
CN201910792406.0A
Other languages
English (en)
Inventor
赵欢欢
许圣霖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Sankuai Online Technology Co Ltd
Original Assignee
Beijing Sankuai Online Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Sankuai Online Technology Co Ltd filed Critical Beijing Sankuai Online Technology Co Ltd
Priority to CN201910792406.0A priority Critical patent/CN110704216A/zh
Publication of CN110704216A publication Critical patent/CN110704216A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种应用程序无响应检测方法,包括:获取与终端当前的前台进程对应的目标应用程序;根据所述目标应用程序,获取用以启动所述前台进程的主线程;基于所述主线程,对所述目标应用程序进行应用程序无响应检测。解决了现有的ANR检测方法在前后台切换的情况下容易出现ANR误报的情况,从而影响ANR检测的准确性的技术问题。取得了提高ANR检测的准确性的有益效果。

Description

用于终端的应用程序无响应检测方法、装置及电子设备
技术领域
本发明涉及计算机技术领域,具体涉及一种用于终端的应用程序无响应检测方法、装置、电子设备及可读存储介质。
背景技术
如果应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(Application Not Responding,ANR)对话框。用户可以选择“等待”而让应用程序继续运行,也可以选择“强制关闭”。而在实际应用中,随着终端设备的功能越来越丰富,在同一移动终端一般会同时启动多个应用程序,并且可能在多个应用程序之间来回切换。
在现有的ANR检测方案中,通过从子线程向主线程发消息,如果主线程在一定时间内没有收到回调,就确认是ANR。但是在多进程环境下,在前后台切换的情况下,通过上述方案则容易出现ANR误报的情况。从而影响ANR检测的准确性,同时影响用户的正常使用。
发明内容
本发明提供一种用于终端的应用程序无响应检测方法、装置、电子设备及可读存储介质,以部分或全部解决现有技术中应用程序无响应检测过程相关的上述问题。
依据本发明第一方面,提供了一种用于终端的应用程序无响应检测方法,包括:
获取与终端当前的前台进程对应的目标应用程序;
根据所述目标应用程序,获取用以启动所述前台进程的主线程;
基于所述主线程,对所述目标应用程序进行应用程序无响应检测。
根据本发明的第二方面,提供了一种用于终端的应用程序无响应检测装置,包括:
目标应用程序确定模块,用于获取与终端当前的前台进程对应的目标应用程序;
主线程获取模块,用于根据所述目标应用程序,获取用以启动所述前台进程的主线程;
应用程序无响应检测模块,用于基于所述主线程,对所述目标应用程序进行应用程序无响应检测。
根据本发明的第三方面,提供了一种电子设备,包括:
处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现前述的用于终端的应用程序无响应检测方法。
根据本发明的第四方面,提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的用于终端的应用程序无响应检测方法。
根据本发明的用于终端的应用程序无响应检测方法,可以获取与终端当前的前台进程对应的目标应用程序;根据所述目标应用程序,获取用以启动所述前台进程的主线程;基于所述主线程,对所述目标应用程序进行应用程序无响应检测。由此解决了现有的ANR检测方法在前后台切换的情况下容易出现ANR误报的情况,从而影响ANR检测的准确性的技术问题。取得了有效避免在前后台切换的情况下ANR的误报,从而提高ANR检测的准确性的有益效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明实施例的一种用于终端的应用程序无响应检测方法的步骤流程图之一;
图2示出了根据本发明实施例的一种用于终端的应用程序无响应检测方法的步骤流程图之二;
图3示出了根据本发明实施例的一种用于终端的应用程序无响应检测装置的结构示意图之一;以及
图4示出了根据本发明实施例的一种用于终端的应用程序无响应检测装置的结构示意图之二。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
详细介绍本发明实施例提供的一种用于终端的应用程序无响应检测方法。
参照图1,示出了本发明实施例中一种用于终端的应用程序无响应检测方法的步骤流程图。
步骤110,获取与终端当前的前台进程对应的目标应用程序。
在实际应用中,在多进程启动的环境下,可能前台运行一进程,而同时后台启动一个或多个进程,那么此时在前后台进程进行切换的情况下,可能会出现检测ANR不准确的误报情况。例如,将当前切换至前台的应用程序的ANR错判为当前切换至后台的应用程序的ANR,等等。
因此,在本发明实施例中,为了提高ANR检测的准确性,需要准确定位当前的前台进程所对应的目标应用程序。也即,获取与终端当前的前台进程对应的目标应用程序。
具体的,在本发明实施例中,可以通过任何可用方法获取与终端当前的前台进程对应的目标应用程序,对此本发明实施例不加以限定。例如,可以先确定终端当前的前台进程,进而获取该前台进程所属的应用程序,即为当前的目标应用程序。
步骤120,根据所述目标应用程序,获取用以启动所述前台进程的主线程。
步骤130,基于所述主线程,对所述目标应用程序进行应用程序无响应检测。
一般而言,处于后台的进程出现ANR的概率较小,处于前台的进程由于需要进行的响应较多,如果其在获取得到当前的目标应用程序之后,则可以根据目标应用程序,获取用以启动相应的前台进程的主线程,并基于相应主线程,对目标应用程序进行ANR检测。
以Android(安卓)操作系统为例,Android应用程序的所有交互操作和响应,都是通过主线程的消息机制来进行的。例如当用户点击了某个控件,系统会向主线程发送消息,主线程的Looper从主线程消息队列中取出消息并处理,处理完当前消息,主线程Looper再去取出下一个消息。当主线程做了耗时的任务,主线程的Looper就无法从消息队列中取出新的消息,所表现出的就是程序卡顿,甚至是ANR。同理,如果在子线程往主线程发送一个消息,要是消息无法得到及时处理,那说明程序发生ANR了。在Android里,应用程序的响应性是由Activity Manager和WindowManager系统服务监视的。例如,如响应输入的事件时间超过5S(秒),broadcastReceiver(广播接收器)超过10S,service(服务)超过20S,就会引起ANR。
因此,在本发明实施例中,可以通过监控用以启动前台进程的主线程,对相应的目标应用程序进行应用程序无响应检测。
在实际应用中,对于终端的用户而言,大多数不太了解各个应用程序的内容运行机制,比较容易接受的是将ANR定位到某个应用程序,而不是直接定位到某个进程,因此在本发明实施例中,可以根据目标应用程序,获取用以启动所述前台进程的主线程,进而基于所述主线程,对目标应用程序进行应用程序无响应检测。
当然,在本发明实施例中,根据需求也可以针对前台进程进行ANR检测,此时可以直接根据前台进程,获取用以启动所述前台进程的主线程,进而基于所述主线程,对前台进程进行应用程序无响应检测,对此本发明实施例不加以限定。
在本发明实施例中,通过获取与终端当前的前台进程对应的目标应用程序;根据所述目标应用程序,获取用以启动所述前台进程的主线程;基于所述主线程,对所述目标应用程序进行应用程序无响应检测。可以有效避免在前后台切换的情况下ANR的误报,从而提高ANR检测的准确性。
实施例二
详细介绍本发明实施例提供的一种用于终端的应用程序无响应检测方法。
参照图2,示出了本发明实施例中一种用于终端的应用程序无响应检测方法的步骤流程图。
步骤210,针对终端中的每个处于启动状态的应用程序对应的进程,通过匿名共享内存的方式,将各个所述进程的进程地址空间映射到共享内存中。
共享内存(shared memory)指在多处理器的计算机系统中,可以被不同中央处理器(Central Processing Unit,CPU)访问的大容量内存。共享内存可以是多进程之间的通信方法,这种方法通常用于一个程序的多进程间通信,实际上多个程序之间也可以通过共享内存来传递信息。
匿名共享内存(Ashmem,Anonymous Shared Memory)是一种共享内存的机制,它利用了Linux的mmap系统调用,将不同进程中的同一段物理内存映射到进程各自的虚拟地址空间,从而实现高效的进程间共享。匿名共享内存有两个特点,一是能够辅助内存管理系统来有效地管理不再使用的内存块,二是通过Binder进程间通信机制来实现进程间的内存共享。Ashmem的两个特点就是共享和高效。共享是指可以在不同进程间共享信息,高效则是因为不同进程都是直接进行的内存操作,相对于其他的进程间通信方式来讲,这种方式会更快一些。
因此,在本发明实施例中,针对终端中的每个处于启动状态的应用程序对应的进程,可以通过匿名共享内存的方式,将各个进程的进程地址空间映射到共享内存中。
步骤220,通过所述共享内存中的共享内存数据,获取包括当前所有存活进程在内的进程列表。
步骤230,基于所述进程列表,获取与所述终端当前的前台进程对应的目标应用程序。
在进行匿名共享内存之后,则可以通过共享内存中的共享内存数据,获取包括当前所有存活进程在内的进程列表。进而则可以基于包括当前所有存活进程在内的进程列表,获取与终端当前的前台进程对应的目标应用程序。具体的,可以根据进程列表先获取当前的前台进程,进而获取前台进程所属的应用程序即为前台进程对应的目标应用程序。
以安卓(Android)系统为例,通过Android的IPC(Inter-Process Communication,进程间通信)机制,匿名共享内存,将各个应用程序的进程地址空间映射到共享内存中,此时通过共享内存数据,可以获取得到包含当前设备中所有存活的进程的进程列表。进而获取当前的前台进程,从而根据前台进程确定前台应用程序,从而激活相应前台进程对应的主线程进行ANR检测。
步骤240,根据所述目标应用程序,获取用以启动所述前台进程的主线程。
步骤250,检测所述终端的跟踪日志文件是否发生变化。
可选地,在本发明实施例中,所述步骤250进一步可以包括:
子步骤251,读取所述终端当前的跟踪日志文件。
子步骤252,相对于前一次读取得到的跟踪日志文件,检测当前读取得到的所述跟踪日志文件的文件大小和/或被修改时间是否发生变化。
子步骤253,响应于当前读取得到的所述跟踪日志文件的文件大小和/或被修改时间是否发生变化,确认所述终端的跟踪日志文件发生变化。
另外,在本发明实施例中,为了准确检测根据日志文件是否发生变化,可以周期性地检测终端的跟踪日志文件,并判断当前读取得到的跟踪日志文件相对于前一次读取得到的跟踪日志文件是否发生变化。具体的,相对于前一次读取得到的跟踪日志文件,可以检测当前读取得到的所述跟踪日志文件的文件大小和/或被修改时间是否发生变化,响应于当前读取得到的所述跟踪日志文件的文件大小和/或被修改时间是否发生变化,确认所述终端的跟踪日志文件发生变化。其中,终端的跟踪日志文件的检测周期可以根据需求进行预先设置,对此本发明实施例不加以限定。
或者,在本发明实施例中,也可以在实时监控跟踪日志文件,每当跟踪日志文件的文件大小和/或被修改时间发生变化时,则可以直接确认前台进程发生ANR,并执行后续步骤,对此本发明实施例不加以限定。
步骤260,响应于所述终端的跟踪日志文发生变化,确认所述前台进程发生应用程序无响应,并获取所述主线程的堆栈信息。
步骤270,基于所述堆栈信息,获取所述前台进程的应用程序无响应原因。
在实际应用中,如果有ANR发生,系统都会在某一特定目录下生成跟踪日志文件(trace.txt文件),也即跟踪日志文件会发生变化。其中,不同终端的跟踪日志文件的位置、命名管理方式可能存在差异,具体的可以根据需求进行预先设置,对此本发明实施例不加以限定。
而且,通过分析trace文件,可以定位产生ANR的原因。产生ANR的原因有很多,比如CPU使用过高、事件没有得到及时的响应、死锁等,下面将通过一次因为死锁导致的ANR问题,来说明如何通过trace文件分析ANR问题。
因此,在本发明实施例中,可以检测终端的跟踪日志文件是否发生变化,如果终端的跟踪日志文发生变化,则可以确认终端当前的前台进程发生应用程序无响应,并且为了分析ANR原因,还可以进一步获取用以启动当前的前台进程的主线程的堆栈信息。
具体地,可以将启动前台进程的主线程进行缓存,然后可以通过Inotify机制,检测跟踪日志文件,也即trace.txt文件的变化情况,如果trace.txt文件发生变化,则可以获取已缓存的主线程中的堆栈信息,根据堆栈信息则可以定位到当前的前台进程产生ANR的原因。其中,Inotify是一个Linux特性,它可以监控文件系统操作,比如读取、写入和创建等。
例如,可以通过IO(Input/Output,输入/输出)操作读取trace.txt文件,进而比较本次读取得到的trace.txt文件相对于上一次读取得到的trace.txt文件是否发生变化。例如文件大小和/或文件修改时间是否发生变化,等等。如果trace.txt文件发生变化,则说明此时正在前台的进程发生了ANR,所以去修改了trace.txt文件,从而可以达到检测ANR的目的。
步骤280,响应于所述目标应用程序发生应用程序无响应,针对所述目标应用程序进行应用程序无响应提示,并显示所述应用程序无响应原因。
在本发明实施例中,为了及时提示终端用户终端出现ANR,在检测到终端当前的前台目标应用程序发生ANR之后,则可以针对目标应用程序进行应用程序无响应提示,并显示应用程序无响应原因。
例如,可以悬浮窗形式进行应用程序无响应提示,并在悬浮窗中显示应用程序无响应原因,等等。
当然,在本发明实施例中,如果当前的前台进程出现ANR,根据需求也可以针对当前的前台进程进行ANR提示,并且显示前台进程ANR原因,对此本发明实施例不加以限定。
在本发明实施例中,针对终端中的每个处于启动状态的应用程序对应的进程,通过匿名共享内存的方式,将各个所述进程的进程地址空间映射到共享内存中;通过所述共享内存中的共享内存数据,获取包括当前所有存活进程在内的进程列表;基于所述进程列表,获取与所述终端当前的前台进程对应的目标应用程序。从而提高获取得到当前处于前台的目标应用程序的准确性,进一步提高ANR检测准确性。
而且,在本发明实施例中,还可以检测所述终端的跟踪日志文件是否发生变化;响应于所述终端的跟踪日志文发生变化,确认所述前台进程发生应用程序无响应,并获取所述主线程的堆栈信息;基于所述堆栈信息,获取所述前台进程的应用程序无响应原因。并且,读取所述终端当前的跟踪日志文件;相对于前一次读取得到的跟踪日志文件,检测当前读取得到的所述跟踪日志文件的文件大小和/或被修改时间是否发生变化;响应于当前读取得到的所述跟踪日志文件的文件大小和/或被修改时间是否发生变化,确认所述终端的跟踪日志文件发生变化。以及,响应于所述目标应用程序发生应用程序无响应,针对所述目标应用程序进行应用程序无响应提示,并显示所述应用程序无响应原因。从而进一步提高ANR检测的准确性,同时及时准确告知相关用户ANR出现的原因,方便用户针对性地进行ANR修复。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
实施例三
详细介绍本发明实施例提供的一种用于终端的应用程序无响应检测装置。
参照图3,示出了本发明实施例中一种用于终端的应用程序无响应检测装置的结构示意图。
目标应用程序确定模块310,用于获取与终端当前的前台进程对应的目标应用程序。
主线程获取模块320,用于根据所述目标应用程序,获取用以启动所述前台进程的主线程。
应用程序无响应检测模块330,用于基于所述主线程,对所述目标应用程序进行应用程序无响应检测。
在本发明实施例中,通过获取与终端当前的前台进程对应的目标应用程序;根据所述目标应用程序,获取用以启动所述前台进程的主线程;基于所述主线程,对所述目标应用程序进行应用程序无响应检测。可以有效避免在前后台切换的情况下ANR的误报,从而提高ANR检测的准确性。
实施例四
详细介绍本发明实施例提供的一种用于终端的应用程序无响应检测装置。
参照图4,示出了本发明实施例中一种用于终端的应用程序无响应检测装置的结构示意图。
目标应用程序确定模块410,用于获取与终端当前的前台进程对应的目标应用程序。
其中,在本发明实施例中,所述目标应用程序确定模块410,进一步可以包括:
内存共享子模块411,用于针对终端中的每个处于启动状态的应用程序对应的进程,通过匿名共享内存的方式,将各个所述进程的进程地址空间映射到共享内存中。
进程列表获取子模块412,用于通过所述共享内存中的共享内存数据,获取包括当前所有存活进程在内的进程列表。
目标应用程序确定子模块413,用于基于所述进程列表,获取与所述终端当前的前台进程对应的目标应用程序。
主线程获取模块420,用于根据所述目标应用程序,获取用以启动所述前台进程的主线程。
应用程序无响应检测模块430,用于基于所述主线程,对所述目标应用程序进行应用程序无响应检测。
其中,在本发明实施例中,所述应用程序无响应检测模块430,进一步可以包括:
跟踪日志检测子模块431,用于检测所述终端的跟踪日志文件是否发生变化。
可选地,在本发明实施例中,所述跟踪日志检测子模块431,进一步可以包括:
跟踪日志读取单元,用于读取所述终端当前的跟踪日志文件;
跟踪日志检测单元,用于相对于前一次读取得到的跟踪日志文件,检测当前读取得到的所述跟踪日志文件的文件大小和/或被修改时间是否发生变化;
跟踪日志变化确认单元,用于响应于当前读取得到的所述跟踪日志文件的文件大小和/或被修改时间是否发生变化,确认所述终端的跟踪日志文件发生变化。
堆栈信息获取子模块432,用于响应于所述终端的跟踪日志文发生变化,确认所述前台进程发生应用程序无响应,并获取所述主线程的堆栈信息。
应用程序无响应原因获取子模块433,用于基于所述堆栈信息,获取所述前台进程的应用程序无响应原因。
应用程序无响应提示模块440,用于响应于所述目标应用程序发生应用程序无响应,针对所述目标应用程序进行应用程序无响应提示,并显示所述应用程序无响应原因。
在本发明实施例中,针对终端中的每个处于启动状态的应用程序对应的进程,通过匿名共享内存的方式,将各个所述进程的进程地址空间映射到共享内存中;通过所述共享内存中的共享内存数据,获取包括当前所有存活进程在内的进程列表;基于所述进程列表,获取与所述终端当前的前台进程对应的目标应用程序。从而提高获取得到当前处于前台的目标应用程序的准确性,进一步提高ANR检测准确性。
而且,在本发明实施例中,还可以检测所述终端的跟踪日志文件是否发生变化;响应于所述终端的跟踪日志文发生变化,确认所述前台进程发生应用程序无响应,并获取所述主线程的堆栈信息;基于所述堆栈信息,获取所述前台进程的应用程序无响应原因。并且,读取所述终端当前的跟踪日志文件;相对于前一次读取得到的跟踪日志文件,检测当前读取得到的所述跟踪日志文件的文件大小和/或被修改时间是否发生变化;响应于当前读取得到的所述跟踪日志文件的文件大小和/或被修改时间是否发生变化,确认所述终端的跟踪日志文件发生变化。以及,响应于所述目标应用程序发生应用程序无响应,针对所述目标应用程序进行应用程序无响应提示,并显示所述应用程序无响应原因。从而进一步提高ANR检测的准确性,同时及时准确告知相关用户ANR出现的原因,方便用户针对性地进行ANR修复。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在本发明实施例中还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现前述的任意一种用于终端的应用程序无响应检测方法。
在本发明实施例中还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现前述的任意一种用于终端的应用程序无响应检测方法的步骤。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的用于终端的应用程序无响应检测设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (12)

1.一种用于终端的应用程序无响应检测方法,包括:
获取与终端当前的前台进程对应的目标应用程序;
根据所述目标应用程序,获取用以启动所述前台进程的主线程;
基于所述主线程,对所述目标应用程序进行应用程序无响应检测。
2.根据权利要求1所述的方法,其特征在于,所述获取与终端当前的前台进程对应的目标应用程序的步骤,包括:
针对终端中的每个处于启动状态的应用程序对应的进程,通过匿名共享内存的方式,将各个所述进程的进程地址空间映射到共享内存中;
通过所述共享内存中的共享内存数据,获取包括当前所有存活进程在内的进程列表;
基于所述进程列表,获取与所述终端当前的前台进程对应的目标应用程序。
3.根据权利要求1所述的方法,其特征在于,所述基于所述主线程,对所述目标应用程序进行应用程序无响应检测的步骤,包括:
检测所述终端的跟踪日志文件是否发生变化;
响应于所述终端的跟踪日志文发生变化,确认所述前台进程发生应用程序无响应,并获取所述主线程的堆栈信息;
基于所述堆栈信息,获取所述前台进程的应用程序无响应原因。
4.根据权利要求3所述的方法,其特征在于,在所述基于所述主线程,对所述目标应用程序进行应用程序无响应检测的步骤之后,还包括:
响应于所述目标应用程序发生应用程序无响应,针对所述目标应用程序进行应用程序无响应提示,并显示所述应用程序无响应原因。
5.根据权利要求3所述的方法,其特征在于,所述检测所述终端的跟踪日志文件是否发生变化的步骤,包括:
读取所述终端当前的跟踪日志文件;
相对于前一次读取得到的跟踪日志文件,检测当前读取得到的所述跟踪日志文件的文件大小和/或被修改时间是否发生变化;
响应于当前读取得到的所述跟踪日志文件的文件大小和/或被修改时间是否发生变化,确认所述终端的跟踪日志文件发生变化。
6.一种用于终端的应用程序无响应检测装置,包括:
目标应用程序确定模块,用于获取与终端当前的前台进程对应的目标应用程序;
主线程获取模块,用于根据所述目标应用程序,获取用以启动所述前台进程的主线程;
应用程序无响应检测模块,用于基于所述主线程,对所述目标应用程序进行应用程序无响应检测。
7.根据权利要求6所述的装置,其特征在于,所述目标应用程序确定模块,包括:
内存共享子模块,用于针对终端中的每个处于启动状态的应用程序对应的进程,通过匿名共享内存的方式,将各个所述进程的进程地址空间映射到共享内存中;
进程列表获取子模块,用于通过所述共享内存中的共享内存数据,获取包括当前所有存活进程在内的进程列表;
目标应用程序确定子模块,用于基于所述进程列表,获取与所述终端当前的前台进程对应的目标应用程序。
8.根据权利要求6所述的装置,其特征在于,所述应用程序无响应检测模块,包括:
跟踪日志检测子模块,用于检测所述终端的跟踪日志文件是否发生变化;
堆栈信息获取子模块,用于响应于所述终端的跟踪日志文发生变化,确认所述前台进程发生应用程序无响应,并获取所述主线程的堆栈信息;
应用程序无响应原因获取子模块,用于基于所述堆栈信息,获取所述前台进程的应用程序无响应原因。
9.根据权利要求8所述的装置,其特征在于,还包括:
应用程序无响应提示模块,用于响应于所述目标应用程序发生应用程序无响应,针对所述目标应用程序进行应用程序无响应提示,并显示所述应用程序无响应原因。
10.根据权利要求8所述的装置,其特征在于,所述跟踪日志检测子模块,包括:
跟踪日志读取单元,用于读取所述终端当前的跟踪日志文件;
跟踪日志检测单元,用于相对于前一次读取得到的跟踪日志文件,检测当前读取得到的所述跟踪日志文件的文件大小和/或被修改时间是否发生变化;
跟踪日志变化确认单元,用于响应于当前读取得到的所述跟踪日志文件的文件大小和/或被修改时间是否发生变化,确认所述终端的跟踪日志文件发生变化。
11.一种电子设备,其特征在于,包括:
处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-5中的任一项所述的用于终端的应用程序无响应检测方法。
12.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1-5中的任一项所述的用于终端的应用程序无响应检测方法。
CN201910792406.0A 2019-08-26 2019-08-26 用于终端的应用程序无响应检测方法、装置及电子设备 Withdrawn CN110704216A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910792406.0A CN110704216A (zh) 2019-08-26 2019-08-26 用于终端的应用程序无响应检测方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910792406.0A CN110704216A (zh) 2019-08-26 2019-08-26 用于终端的应用程序无响应检测方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN110704216A true CN110704216A (zh) 2020-01-17

Family

ID=69193419

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910792406.0A Withdrawn CN110704216A (zh) 2019-08-26 2019-08-26 用于终端的应用程序无响应检测方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN110704216A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111522764A (zh) * 2020-04-07 2020-08-11 Oppo(重庆)智能科技有限公司 插拔操作的处理方法、终端及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108572906A (zh) * 2018-04-24 2018-09-25 广州优视网络科技有限公司 Anr实时监控方法、装置、终端和存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108572906A (zh) * 2018-04-24 2018-09-25 广州优视网络科技有限公司 Anr实时监控方法、装置、终端和存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111522764A (zh) * 2020-04-07 2020-08-11 Oppo(重庆)智能科技有限公司 插拔操作的处理方法、终端及存储介质
CN111522764B (zh) * 2020-04-07 2023-02-28 Oppo(重庆)智能科技有限公司 插拔操作的处理方法、终端及存储介质

Similar Documents

Publication Publication Date Title
US10346148B2 (en) Per request computer system instances
US20170364384A1 (en) Fast-booting application image
US20170005858A1 (en) Log processing method and client
US20210357235A1 (en) Method, device, apparatus for identifying graphics card of gpu server and medium
JP2015511347A5 (zh)
CN110633156A (zh) 浏览器关联应用程序的方法、装置及电子设备、存储介质
CN112817831A (zh) 应用性能监测方法、装置、计算机系统和可读存储介质
CN113407383A (zh) 主备系统切换方法、装置、服务器及主备系统
US9262274B2 (en) Persistent data across reboots
CN116340053A (zh) 系统崩溃的日志处理方法、装置、计算机设备和介质
CN110362435B (zh) Purley平台服务器的PCIE故障定位方法、装置、设备及介质
CN113220403B (zh) h5拦截Android返回事件的方法、装置及电子设备
JP5014179B2 (ja) Os優先度変更装置及びos優先度変更プログラム
CN110704216A (zh) 用于终端的应用程序无响应检测方法、装置及电子设备
CN113362173A (zh) 防重机制验证方法、验证系统、电子设备及存储介质
US8255642B2 (en) Automatic detection of stress condition
CN111459481A (zh) 页面侧滑方法、装置、电子设备和存储介质
CN107608756B (zh) 一种基于cpu硬件特性的虚拟机自省触发方法及系统
CN111563153B (zh) 基于剪切板信息共享实现的推荐方法以及终端
CN114490266A (zh) 一种数据采集方法、装置、设备及存储介质
CN114647411A (zh) 编程界面加载方法、装置、电子设备及存储介质
CN109857481B (zh) 一种数据采集方法、装置、可读介质及电子设备
CN111367750B (zh) 一种异常处理方法、装置及其设备
CN111488230A (zh) 修改日志输出级别的方法、装置、电子设备及存储介质
CN110245074B (zh) 一种日志记录的生成方法、装置、存储介质和服务器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20200117