CN111625425A - 一种数据监控方法、装置及*** - Google Patents
一种数据监控方法、装置及*** Download PDFInfo
- Publication number
- CN111625425A CN111625425A CN202010470125.6A CN202010470125A CN111625425A CN 111625425 A CN111625425 A CN 111625425A CN 202010470125 A CN202010470125 A CN 202010470125A CN 111625425 A CN111625425 A CN 111625425A
- Authority
- CN
- China
- Prior art keywords
- exception
- thread
- termination signal
- information
- collecting
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开关于一种数据监控方法、装置、电子设备以及存储介质,用以至少解决相关技术中由于操作***的开发中***框架并未提供接口监听ANR问题的接口,导致开发人员无法准确采集定位ANR问题,最终使得ANR问题无法还原和修复,进而导致应用无法流畅运行的问题,方法包括:当监听到***服务进程发出应用终止信号时,拦截所述终止信号;响应于所述终止信号,创建异常收集线程,并通过所述异常收集线程收集异常信息,并写入自定义日志中;当确定所述异常收集线程自定义日志写入完毕后,将所述终止信息转发至***异常处理线程,以使得***异常处理线程响应于所述终止信息进行异常处理。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据监控方法、装置、电子设备以及存储介质***。
背景技术
随着终端技术的飞速发展,各种应用了最新技术的智能终端被开发了出来,而为满足用户各式各样的使用需求,越来越多有关生活以及娱乐等方面的应用程序(application,APP)被开发出来,极大地方便了人们的日常工作与生活,这也使得智能终端以及安装在智能终端上的APP逐渐成为了人们日常工作生活不可获取的重要工具。
而受限于应用程序开发人员的技术水准、测试深度以及与终端***的适配性等原因,应用程序在智能终端上的运行稳定程度均有所不同,而对于大多数应用程序来说,或多或少均存在一些内部出错的潜在诱发因素,在现有技术中,当应用程序在运行过程中出现异常或者错误时,应用程序通常会被强制结束,即通常所说的应用崩溃或者说是应用闪退,如果用户在使用APP的过程中频繁出现APP崩溃,会造成用户较大的烦躁情绪,极大地影响了用户的体验,且严重时可能会导致用户卸载该APP。因此,应用程序开发人员往往需要收集异常问题,并基于收集到的异常问题对应用进行修复。
以安卓***为例,当用户的应用程序有一段时间响应不够灵敏时,***会向用户显示一个对话框,这个对话框被称作应用程序无响应(Application Not Responding,ANR)对话框。用户可以选择“等待”,而让程序继续运行;或者可以选择“强制关闭”而让程序停止运行,ANR问题的出现极大地影响了应用程序运行的流畅出程度。而一个完善的应用应该尽可能避免ANR问题的出现。
为了消除程序的ANR问题,往往需要开发人员对应用发生的ANR问题进行监听,以获取发生ANR问题的相关信息,进而可以根据获取到的信息分析处理已出现的ANR问题,从而避免该ANR问题的再次发生。
然而,现有的安卓***的开发中***框架并未提供接口监听ANR问题的接口,导致开发人员无法准确采集定位ANR问题,最终使得ANR问题无法还原和修复,极大地应用了用户的使用体验。
发明内容
本公开提供一种数据监控方法、装置、电子设备以及存储介质,以至少解决相关技术中由于操作***的开发中***框架并未提供接口监听ANR问题的接口,导致开发人员无法准确采集定位ANR问题,最终使得ANR问题无法还原和修复,进而导致应用无法流畅运行的问题。本公开的技术方案如下:
当监听到***服务进程发出应用终止信号时,拦截所述终止信号;响应于所述终止信号,创建异常收集线程,并通过所述异常收集线程收集异常信息,并写入自定义日志中;当确定所述异常收集线程自定义日志写入完毕后,将所述终止信息转发至***异常处理线程,以使得***异常处理线程响应于所述终止信息进行异常处理。
根据本公开实施例的第二方面,提供一种数据监控装置,包括:
拦截单元,被配置为执行当监听到***服务进程发出应用终止信号时,拦截所述终止信号;
异常收集单元,被配置为执行响应于所述终止信号,创建异常收集线程,并通过所述异常收集线程收集异常信息,并写入自定义日志中;
转发单元,被配置为执行当确定所述异常收集线程自定义日志写入完毕后,将所述终止信息转发至***异常处理线程,以使得***异常处理线程响应于所述终止信息进行异常处理。
根据本公开实施例的第三方面,提供一种数据监控电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现上述第一方面中任一项数据监控方法步骤。
根据本公开实施例的第四方面,提供一种存储介质,包括:当所述存储介质中的指令由数据监控电子设备的处理器执行时,使得所述数据监控电子设备能够执行上述第一方面中任一项数据监控方法步骤。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括:
当其在设备上运行时,使得项目打包设备执行:上述第一方面中任一项数据监控方法步骤。
本公开的实施例提供的技术方案至少带来以下有益效果:
采用本公开实施例提供的数据监控方法,当监听到***服务进程发出应用终止信号时,应用程序通过主线程可以先于***异常处理线程拦截该终止信号,响应于该终止信号,创建异常收集线程,该异常收集线程通过调用***函数,收集异常信息,并写入自定义日志中,以完成应用异常数据的采集;当确定该异常收集线程自定义日志写入完毕后,应用主线可以将该终止信息重新转发至***异常处理线程,以使得***异常处理线程响应于所述终止信息进行异常处理,从而可以在终端操作***无感知的情况下,采集到应用的异常数据,即不会影响***收集日志与用户交互,同时可以准确采集定位应用异常数据(如ANR问题数据),以使得应用开发人员可以及时根据采集到的异常数据修复对应用进行修复,极大地改善了用户的使用体验。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种数据监控方法的流程图;
图2是根据一示例性实施例示出的一种安卓SystemServer进程处理ANR问题的流程图;
图3是根据一示例性实施例示出的一种ANR问题弹窗的框图;
图4是根据一示例性实施例示出的一种数据监控方法的流程图;
图5是根据一示例性实施例示出的一种数据监控装置的框图;
图6是根据一示例性实施例示出的一种数据监控电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
以下结合附图,详细说明本公开的实施例所提供的技术方案。
本公开的实施例提供了一种数据监控方法,用以至少解决相关技术中由于操作***的开发中***框架并未提供接口监听ANR问题的接口,导致开发人员无法准确采集定位ANR问题,最终使得ANR问题无法还原和修复,进而导致应用无法流畅运行的问题。
本公开的实施例提供的数据监控方法的执行主体,可以但不限于为手机、平板电脑、个人电脑(Personal Computer,PC)、智能电视以及任何可以运行应用程序的终端设备中的至少一种。或者,该方法的执行主体也可以是安装在上述设备上的应用程序本身。
为便于描述,下文以该方法的执行主体为视频APP为例,对本公开的实施例所提供的数据监控方法进行介绍。可以理解,该方法的执行主体为视频APP只是一种示例性的说明,并不应理解为对本公开实施例的限定。
图1是根据一示例性实施例示出的一种数据监控方法的流程图,如图1所示,该数据监控方法用于视频APP中,包括以下步骤:
在步骤S101中,当监听到***服务进程发出应用终止信号时,拦截所述终止信号;
应用程序在启动时,会有一个对应的进程被终端操作***创建,该进程表示该应用针对某个数据集合的运行活动。与此同时,该进程中也会有一个线程立刻运行,该线程通常叫做应用的主线程(Main Thread),主线程在应用启动时开始执行,后续如果需要再创建线程,那么创建的线程就是这个主线程的子线程,每个进程都至少有一个主线程。主线程的结束,意味着整个进程的结束,所有的其他线程都会退出。主线程的特征包括:是产生其他子线程的线程;主线程中执行程序的控制;通常主线程必须最后完成执行,执行各种关闭动作。
一般地,应用程序ANR问题的检测行为是由终端操作***来实现的,具体实现流程如图2所示。当安卓***的***服务进程(SystemServer进程)检测到APP进程在运行中发生ANR问题时,***system_server进程会发出的SIG QUIT信号(SIGQUIT信号,是程序终止信号,用于通知前台进程组终止程序对应的进程),由于虚拟机在运行该应用时,针对该应用的线程进行了屏蔽处理,因而该SIG QUIT信号只能***作***特定的处理线程SignalCatcher接收,而无法被应用的其他线程接收,SignalCatcher线程在接收到SystemServer进程发送的SIGQUIT信号后,开始收集APP进程中的异常信息,并记录在操作***的trace.txt文件中,当SystemServer进程检测到trace.txt文件已经写完后,则会向用户弹出如图3所示的ANR对话框,当用户选择“强制关闭”时,SystemServer进程会向APP进程发送强制进程终止的SIGKILL信号,该APP的主线程接收到SIGKILL信号后,自动停止APP进程。
由此可见,由于终端操作***虚拟机的屏蔽处理,导致现有APP线程无法获取到SystemServer进程发出的SIG QUIT信号,也就导致现有APP无法直接感知到ANR问题的发生,进而无法及时采集ANR数据。
因而为了解决相关技术中无法准确采集ANR数据的问题,首先需要让应用线程可以接收到的SystemServer进程发出的SIG QUIT信号。在相关技术中,操作***虚拟机为了防止APP监听***信号,在创建应用程序线程时,将所有APP线程的标志位均设置为限制标记(block),以达到屏蔽应用线程接收SystemServer进程发出信号的目的。则在本申请实施例中,可以通过修改应用主线程标记位的方式,以解除虚拟机对应用线程的屏蔽。
具体地,可以通过对APP程序代码进行修改,以使得虚拟机在运行到这部分修改后的代码时,可以对虚拟机创建的主线程的标记位进行修改,将标记位由block修改为unblock,以使得应用主线程可以接收到SystemServer进程发出SIGQUIT信号。
则在一种实施方式中,步骤S101的具体实现方式可以包括:当监听到***服务进程发出终止信号时,将针对所述应用预先创建的主线程的标记位由限制标记位修改解除限制标记位,以使得修改后的主线程可以接收所述终止信号;通过所述修改后的主线程对所述终止信号进行拦截。
通过步骤S101的上述操作,APP主线程可以监听到SystemServer进程发出SIGQUIT信号,并对该信号进行拦截,以使得该信号暂时不会***作***特定的处理线程SignalCatcher接收。
在步骤S102中,APP主线程响应于通过执行步骤S101拦截到终止信号,创建异常收集线程,并通过该异常收集线程收集异常信息,并写入自定义日志中;
APP主线程拦截到SystemServer进程发出SIGQUIT信号后,可以确定当前APP出现ANR问题,则APP主线程会创建一个异常收集线程,来自行收集ANR异常信息。
具体地,在本方案中,APP可以通过利用钩子(Hook)机制,通过调用虚拟机内部函数的方式,来收集ANR异常信息,并将收集到的ANR异常信息写入到APP的自定义日志中,则通过执行步骤S102的方法,在APP监听到SIGQUIT信号,所执行的操作如图4所示。
为了可以调用虚拟机内部函数进行异常信息的收集,在本申请实施例中,首先需要确定虚拟机中异常收集函数的地址,则在一种实施方式中,步骤S102的具体实现方式可以包括:扫描内存,获取虚拟机可执行文件在内存中的起始地址;根据所述起始地址,在所述虚拟机可执行文件中确定出异常收集函数的地址;根据所述异常收集函数的地址,通过调用所述异常收集函数收集异常信息。
在移动终端操作***中,每一个***库,包括虚拟机的libart.so库,都是一个可执行与可链接格式(Executable and Linkable Format,ELF)文件,ELF文件是linux操作***可执行文件的标准格式,在ELF文件中保存了可执行的代码和数据。ELF文件由ELF头(ELFheader)、程序头表(Program header table)、节(Section)和节头表(Section headertable)这四部分组成。而其中,.dynsym段落和.symtab段落中保存了该***库的所有符号(主要为函数名称以及参数表)和符号的地址,则在本申请实施例中,APP需要找到虚拟机libart.so库中.dynsym段落和.symtab段落的地址,进而从中调用异常收集函数。
在Android操作***中,每个***库执行前,需要先加载(load)进内存中,而由于虚拟机运行在app自身的进程里,APP有读取自身内存的权限,因而APP可以通过扫描内存的方式,获取虚拟机libart.so库加载在内存中的起始地址(基地址)。在一种实施方式中,具体可以通过扫描内存中的/proc/pid/maps,以得到libart.so库在内存中的起始地址。
同时,APP可以通过解析ELF文件的方式,获取libart.so库中各段内容在内存中的偏移量,则APP可以根据名称,获取.dynsym段落以及.symtab段落在内存中的偏移量,进而libart.so库在内存中的起始地址,确定libart.so库中.dynsym段落以及.symtab段落在内存中的地址。
在本申请实施例中,可以通过下述方法在虚拟机libart.so库中确定出异常收集函数的地址:对所述虚拟机可执行文件进行解析,确定所述虚拟机可执行文件中保存有函数名称以及参数的段落在内存中的偏移量;根据确定的所述偏移量以及所述起始地址,在所述虚拟机可执行文件中确定出异常收集函数的地址。
这里需要说明的是,在本方案中需要将虚拟机中接口稳定的函数方法作为异常收集函数,以避免由于终端开发商的改动,而导致APP无法调用该函数的问题。而函数对应的参数越少,则该函数被改动的可能性就越小,因而在本申请实施例中,可以从.dynsym段落以及.symtab段落中确定出对应参数最少的函数作为异常收集函数。
则在本申请实施例中,具体可以采用下述方法,确定异常收集函数的地址:在保存有函数名称以及参数的段落中,将对应参数数量最少的函数确定为异常收集函数;根据所述保存有函数名称以及参数的段落在内存中的偏移量,确定所述异常收集函数在内存中的偏移量;根据所述异常收集函数在内存中的偏移量以及所述起始地址,在所述虚拟机可执行文件中确定出异常收集函数的地址。例如,在一种实施方式中,可以将只有一个参数的DumpForSigQuit函数,确定为异常收集函数。
另外,这里还需要说明的是,为了保证异常收集线程在收集异常数据时,虚拟机状态不变,根据操作***版本适配,在hook函数时,还需要进行相应的加锁操作。
通过执行步骤S102,APP通过调用虚拟机异常收集函数的方式,对发生ANR问题时的异常信息进行收集,并写入APP自定义日志中。
在步骤S103中,当确定所述异常收集线程自定义日志写入完毕后,将所述终止信息转发至***异常处理线程,以使得***异常处理线程响应于所述终止信息进行异常处理。
在执行步骤S102的过程中,APP主线程会对异常收集线程的状态进行监控,当确定该异常收集线程完成自定义日志写入后,主线程会将拦截的SIGQUIT信号发送至操作***处理线程Signal Catcher处,以使得Signal Catcher线程响应于该信号,向操作***的traces.txt文件中写入本次ANR问题的相关信息,比如虚拟机的状态,发生ANR的时间,发生ANR的进程,相关进程的所有线程的堆栈,CPU调度信息、锁关系等等,SystemServer进程会监听trace文件写入完成后,弹窗提示用户终止应用,从而应用可以在操作***无感知的情况下,完成ANR异常数据的采集。
这里需要说明的是,当用户点击ANR弹窗中的“强制关闭”按键后,该APP会被杀死,当该APP再次启动时,APP可以将之前写好的、保存有ANR异常数据的自定义日志上传至APP后台服务器,从而完成了一次***无感且准确的ANR异常数据监控过程。
具体地,在一种实施方式中,本申请实施例提供的方法还可以包括:当确定所述应用重启后,将包含异常信息的所述自定义日志上传至所述应用服务器。
采用本公开实施例提供的数据监控方法,当监听到***服务进程发出应用终止信号时,应用程序通过主线程可以先于***异常处理线程拦截该终止信号,响应于该终止信号,创建异常收集线程,该异常收集线程通过调用***函数,收集异常信息,并写入自定义日志中,以完成应用异常数据的采集;当确定该异常收集线程自定义日志写入完毕后,应用主线可以将该终止信息重新转发至***异常处理线程,以使得***异常处理线程响应于所述终止信息进行异常处理,从而可以在终端操作***无感知的情况下,采集到应用的异常数据,即不会影响***收集日志与用户交互,同时可以准确采集定位应用异常数据(如ANR问题数据),以使得应用开发人员可以及时根据采集到的异常数据修复对应用进行修复,极大地改善了用户的使用体验。
图5是根据一示例性实施例示出的一种数据监控装置框图,用以至少解决相关技术中由于操作***的开发中***框架并未提供接口监听ANR问题的接口,导致开发人员无法准确采集定位ANR问题,最终使得ANR问题无法还原和修复,进而导致应用无法流畅运行的问题。参照图5,该装置包括拦截单元201,异常收集单元202和转发单元203。
其中,该拦截单元201,被配置为执行当监听到***服务进程发出应用终止信号时,拦截所述终止信号;
该异常收集单元202,被配置为执行响应于所述终止信号,创建异常收集线程,并通过所述异常收集线程收集异常信息,并写入自定义日志中;
该转发单元203,被配置为执行当确定所述异常收集线程自定义日志写入完毕后,将所述终止信息转发至***异常处理线程,以使得***异常处理线程响应于所述终止信息进行异常处理。
在一种实施例中,该拦截单元201,具体被配置为执行:当监听到***服务进程发出终止信号时,将针对所述应用预先创建的主线程的标记位由限制标记位修改解除限制标记位,以使得修改后的主线程可以接收所述终止信号;通过所述修改后的主线程对所述终止信号进行拦截。
在一种实施例中,该异常收集单元202,具体被配置为执行:扫描内存,获取虚拟机可执行文件在内存中的起始地址;根据所述起始地址,在所述虚拟机可执行文件中确定出异常收集函数的地址;根据所述异常收集函数的地址,通过调用所述异常收集函数收集异常信息。
在一种实施例中,该异常收集单元202,具体被配置为执行:对所述虚拟机可执行文件进行解析,确定所述虚拟机可执行文件中保存有函数名称以及参数的段落在内存中的偏移量;根据确定的所述偏移量以及所述起始地址,在所述虚拟机可执行文件中确定出异常收集函数的地址。
在一种实施例中,该异常收集单元202,具体被配置为执行:在所述保存有函数名称以及参数的段落中,将对应参数数量最少的函数确定为异常收集函数;根据所述保存有函数名称以及参数的段落在内存中的偏移量,确定所述异常收集函数在内存中的偏移量;根据所述异常收集函数在内存中的偏移量以及所述起始地址,在所述虚拟机可执行文件中确定出异常收集函数的地址。
在一种实施例中,还包括日志上传单元,具体被配置为执行:当确定所述应用重启后,将包含异常信息的所述自定义日志上传至所述应用服务器。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
采用本公开实施例提供的数据监控装置,当监听到***服务进程发出应用终止信号时,应用程序通过主线程可以先于***异常处理线程拦截该终止信号,响应于该终止信号,创建异常收集线程,该异常收集线程通过调用***函数,收集异常信息,并写入自定义日志中,以完成应用异常数据的采集;当确定该异常收集线程自定义日志写入完毕后,应用主线可以将该终止信息重新转发至***异常处理线程,以使得***异常处理线程响应于所述终止信息进行异常处理,从而可以在终端操作***无感知的情况下,采集到应用的异常数据,即不会影响***收集日志与用户交互,同时可以准确采集定位应用异常数据(如ANR问题数据),以使得应用开发人员可以及时根据采集到的异常数据修复对应用进行修复,极大地改善了用户的使用体验。
图6是根据一示例性实施例示出的一种用于数据监控的电子设备300的结构示意图。请参考图6,在硬件层面,该数据监控电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-AccessMemory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成数据监控装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
当监听到***服务进程发出应用终止信号时,拦截所述终止信号;
响应于所述终止信号,创建异常收集线程,并通过所述异常收集线程收集异常信息,并写入自定义日志中;
当确定所述异常收集线程自定义日志写入完毕后,将所述终止信息转发至***异常处理线程,以使得***异常处理线程响应于所述终止信息进行异常处理。
上述如本公开图6所示实施例揭示的数据监控电子设备执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1的方法,并实现数据监控装置在图1所示实施例中的功能,本公开实施例在此不再赘述。
当然,除了软件实现方式之外,本公开的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器,上述指令可由电子设备300的处理器320执行以完成上述方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据监控方法,其特征在于,包括:
当监听到***服务进程发出应用终止信号时,拦截所述终止信号;
响应于所述终止信号,创建异常收集线程,并通过所述异常收集线程收集异常信息,并写入自定义日志中;
当确定所述异常收集线程自定义日志写入完毕后,将所述终止信息转发至***异常处理线程,以使得***异常处理线程响应于所述终止信息进行异常处理。
2.根据权利要求1所述的数据监控方法,其特征在于,当监听到***服务进程发出终止信号时,拦截所述终止信号,具体包括:
当监听到***服务进程发出终止信号时,将针对所述应用预先创建的主线程的标记位由限制标记位修改解除限制标记位,以使得修改后的主线程可以接收所述终止信号;
通过所述修改后的主线程对所述终止信号进行拦截。
3.根据权利要求1所述的数据监控方法,其特征在于,所述通过所述异常收集线程收集异常信息,具体包括:
扫描内存,获取虚拟机可执行文件在内存中的起始地址;
根据所述起始地址,在所述虚拟机可执行文件中确定出异常收集函数的地址;
根据所述异常收集函数的地址,通过调用所述异常收集函数收集异常信息。
4.根据权利要求3所述的数据监控方法,其特征在于,根据所述起始地址,在所述虚拟机可执行文件中确定出异常收集函数的地址,具体包括:
对所述虚拟机可执行文件进行解析,确定所述虚拟机可执行文件中保存有函数名称以及参数的段落在内存中的偏移量;
根据确定的所述偏移量以及所述起始地址,在所述虚拟机可执行文件中确定出异常收集函数的地址。
5.根据权利要求4所述的数据监控方法,其特征在于,根据确定的所述偏移量以及所述起始地址,在所述虚拟机可执行文件中确定出异常收集函数的地址,具体包括:
在所述保存有函数名称以及参数的段落中,将对应参数数量最少的函数确定为异常收集函数;
根据所述保存有函数名称以及参数的段落在内存中的偏移量,确定所述异常收集函数在内存中的偏移量;
根据所述异常收集函数在内存中的偏移量以及所述起始地址,在所述虚拟机可执行文件中确定出异常收集函数的地址。
6.根据权利要求1所述的数据监控方法,其特征在于,还包括:
当确定所述应用重启后,将包含异常信息的所述自定义日志上传至所述应用服务器。
7.一种数据监控装置,其特征在于,包括:
拦截单元,被配置为执行当监听到***服务进程发出应用终止信号时,拦截所述终止信号;
异常收集单元,被配置为执行响应于所述终止信号,创建异常收集线程,并通过所述异常收集线程收集异常信息,并写入自定义日志中;
转发单元,被配置为执行当确定所述异常收集线程自定义日志写入完毕后,将所述终止信息转发至***异常处理线程,以使得***异常处理线程响应于所述终止信息进行异常处理。
8.根据权利要求7所述的数据监控装置,其特征在于,所述拦截单元,具体被配置为执行:
当监听到***服务进程发出终止信号时,将针对所述应用预先创建的主线程的标记位由限制标记位修改解除限制标记位,以使得修改后的主线程可以接收所述终止信号;
通过所述修改后的主线程对所述终止信号进行拦截。
9.一种数据监控电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一权项所述的数据监控方法。
10.一种存储介质,当所述存储介质中的指令由数据监控电子设备的处理器执行时,使得所述数据监控电子设备能够执行如权利要求1至6中任一权项所述的数据监控处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010470125.6A CN111625425A (zh) | 2020-05-28 | 2020-05-28 | 一种数据监控方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010470125.6A CN111625425A (zh) | 2020-05-28 | 2020-05-28 | 一种数据监控方法、装置及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111625425A true CN111625425A (zh) | 2020-09-04 |
Family
ID=72270016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010470125.6A Pending CN111625425A (zh) | 2020-05-28 | 2020-05-28 | 一种数据监控方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111625425A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732475A (zh) * | 2021-01-13 | 2021-04-30 | 北京字节跳动网络技术有限公司 | 日志收集的方法、装置、电子设备、及存储介质 |
CN113064799A (zh) * | 2021-04-30 | 2021-07-02 | 网易传媒科技(北京)有限公司 | 一种客户端监控方法、装置、***、介质和计算设备 |
CN113703400A (zh) * | 2021-07-27 | 2021-11-26 | 中电科思仪科技股份有限公司 | 一种支持远程协同的设备状态监测***及其状态上报方法 |
CN113867999A (zh) * | 2021-08-30 | 2021-12-31 | 荣耀终端有限公司 | 应用异常处理方法、终端及计算机可读存储介质 |
CN117453513A (zh) * | 2023-12-21 | 2024-01-26 | 荣耀终端有限公司 | 日志获取方法及相关设备 |
CN117453513B (zh) * | 2023-12-21 | 2024-07-26 | 荣耀终端有限公司 | 日志获取方法及相关设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104268055A (zh) * | 2014-09-01 | 2015-01-07 | 腾讯科技(深圳)有限公司 | 一种程序异常的监控方法和装置 |
CN105446806A (zh) * | 2014-09-28 | 2016-03-30 | 广州市动景计算机科技有限公司 | 一种应用程序无响应的处理方法及装置 |
US20160321453A1 (en) * | 2013-12-30 | 2016-11-03 | Beijing Qihoo Technology Company Limited | Method and device for detecting malicious code in an intelligent terminal |
CN108897533A (zh) * | 2018-06-06 | 2018-11-27 | 北京奇虎科技有限公司 | 一种函数调用的方法、装置及终端 |
CN110377341A (zh) * | 2019-06-10 | 2019-10-25 | 北京字节跳动网络技术有限公司 | 一种监听无响应异常的方法、装置、介质和电子设备 |
-
2020
- 2020-05-28 CN CN202010470125.6A patent/CN111625425A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160321453A1 (en) * | 2013-12-30 | 2016-11-03 | Beijing Qihoo Technology Company Limited | Method and device for detecting malicious code in an intelligent terminal |
CN104268055A (zh) * | 2014-09-01 | 2015-01-07 | 腾讯科技(深圳)有限公司 | 一种程序异常的监控方法和装置 |
CN105446806A (zh) * | 2014-09-28 | 2016-03-30 | 广州市动景计算机科技有限公司 | 一种应用程序无响应的处理方法及装置 |
CN108897533A (zh) * | 2018-06-06 | 2018-11-27 | 北京奇虎科技有限公司 | 一种函数调用的方法、装置及终端 |
CN110377341A (zh) * | 2019-06-10 | 2019-10-25 | 北京字节跳动网络技术有限公司 | 一种监听无响应异常的方法、装置、介质和电子设备 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732475A (zh) * | 2021-01-13 | 2021-04-30 | 北京字节跳动网络技术有限公司 | 日志收集的方法、装置、电子设备、及存储介质 |
CN113064799A (zh) * | 2021-04-30 | 2021-07-02 | 网易传媒科技(北京)有限公司 | 一种客户端监控方法、装置、***、介质和计算设备 |
CN113703400A (zh) * | 2021-07-27 | 2021-11-26 | 中电科思仪科技股份有限公司 | 一种支持远程协同的设备状态监测***及其状态上报方法 |
CN113867999A (zh) * | 2021-08-30 | 2021-12-31 | 荣耀终端有限公司 | 应用异常处理方法、终端及计算机可读存储介质 |
CN117453513A (zh) * | 2023-12-21 | 2024-01-26 | 荣耀终端有限公司 | 日志获取方法及相关设备 |
CN117453513B (zh) * | 2023-12-21 | 2024-07-26 | 荣耀终端有限公司 | 日志获取方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111625425A (zh) | 一种数据监控方法、装置及*** | |
CN109284269B (zh) | 异常日志分析方法、装置、存储介质及服务器 | |
US10838838B2 (en) | Method and apparatus for dealing with abnormality of application program and storage medium | |
CN108197032B (zh) | Ios应用的主线程卡顿监测方法、介质、设备及*** | |
CN111708655A (zh) | 一种应用程序崩溃处理方法、装置及*** | |
WO2021218178A1 (zh) | 报表自动生成方法、装置、计算机设备及存储介质 | |
US9256513B2 (en) | Method, apparatus and computer readable medium for automatic debugging and error prevention | |
CN110879781B (zh) | 程序调试方法、装置、电子设备及计算机可读存储介质 | |
CN109144873B (zh) | 一种linux内核处理方法及装置 | |
CN110795311B (zh) | 一种事件回放的方法及装置 | |
CN107515811B (zh) | 一种获取应用程序耗电量的方法和装置 | |
CN110688245A (zh) | 信息获取方法、装置、存储介质及设备 | |
CN112241362A (zh) | 一种测试方法、装置、服务器及存储介质 | |
US20230315620A1 (en) | System and Method for Diagnosing a Computing Device in Safe Mode | |
CN109783261B (zh) | 终端应用的崩溃处理方法及装置、电子设备、存储介质 | |
CN116860552A (zh) | 应用程序运行监测方法、装置、电子设备及存储介质 | |
CN107391267B (zh) | 一种进程检测方法、装置和电子设备、可读存储介质 | |
CN115756934A (zh) | 一种应用崩溃分析方法及装置 | |
CN115686899A (zh) | 一种终端异常捕获分析方法和装置 | |
CN114637685A (zh) | 银行***中应用程序的性能测试方法、装置、设备和介质 | |
CN113590435A (zh) | 一种异常信息显示方法及设备 | |
CN113900914A (zh) | 异常处理方法、装置、电子设备及计算机存储介质 | |
CN112631949A (zh) | 一种调试方法、装置、计算机设备及存储介质 | |
CN113742113A (zh) | 一种嵌入式***健康管理方法、设备及储存介质 | |
CN111782508A (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 |