本发明涉及计算机技术领域,特别涉及一种上报崩溃事件的方法、装置、计算机设备及存储介质。
背景技术:
计算机设备运行软件时,需要对崩溃事件进行监控,以便向计算机设备服务器上报崩溃事件,提供给技术人员进行分析。
目前,计算机设备通过辅助进程对崩溃事件进行监控。若将运行软件的进程称为主进程,则在主进程启动后,对应的辅助进程也相继启动来监控主进程,当主进程正常退出时,可以关闭该辅助进程。计算机设备在进程表中记录着各个进程的状态,例如运行状态、睡眠状态等。当主进程崩溃时,主进程会异常退出,无法执行正常的业务逻辑,也即无法在退出时关闭辅助进程。因此,辅助进程可以通过周期性轮询进程表的方式,查询主进程是否运行。当辅助进程查询到主进程运行时,视为正常情况;当辅助进程查询到主进程不在运行时,确定监控到崩溃事件。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
仅当辅助进程发起查询时才能监控到崩溃事件,如果主进程崩溃时,辅助进程并未发起查询,则无法在第一时间上报崩溃事件,上报崩溃事件的即时性较低。并且,如果用户重启软件使得主进程再次运行,而主进程从崩溃到重新运行正好处于辅助进程相邻两次查询的间隙中,则会遗漏崩溃事件。
技术实现要素:
本发明实施例提供了一种上报崩溃事件的方法、装置、计算机设备及存储介质,可以在提高上报崩溃事件的即时性和全面性。所述技术方案如下:
一方面,提供了一种上报崩溃事件的方法,所述方法应用于辅助进程,所述方法包括:
在所述辅助进程启动时,发起对主进程创建并占用的全局互斥量的调用请求;
当调用到所述主进程释放的所述全局互斥量时,确定所述主进程的退出状态类型,其中,所述退出状态类型为异常退出或正常退出;
当所述退出状态类型为异常退出时,上报所述主进程的崩溃事件。
可选的,所述当调用到所述主进程释放的所述全局互斥量时,确定所述主进程的退出状态类型,包括:
当调用到所述主进程释放的所述全局互斥量时,如果所述第一事件对象处于未触发状态,则确定所述主进程的退出状态类型为正常退出,如果所述第一事件对象处于触发状态,则确定所述主进程的退出状态类型为异常退出。
可选的,所述方法还包括:
当调用到所述主进程释放的所述全局互斥量时,如果所述第一事件对象处于未触发状态且所述第二事件对象处于触发状态,则获取所述主进程记录的异常事件对应的属性数据,在上报所述主进程的崩溃事件时,上报所述属性数据。
一方面,提供了一种上报崩溃事件的方法,所述方法应用于主进程,所述方法包括:
在所述主进程启动时,创建全局互斥量,并在所述主进程运行的过程中保持对所述全局互斥量的占用;
启动辅助进程;
当执行退出指令时,释放所述全局互斥量。
可选的,所述主进程的退出指令包括异常退出指令和正常退出指令,所述方法还包括:
在所述主进程启动时,创建第一事件对象;
当执行退出指令时,如果所述退出指令为正常退出指令,则在所述释放所述全局互斥量之前,所述方法还包括:
将所述第一事件对象设置为触发状态。
可选的,所述异常退出指令包括多种类型的异常退出指令,所述方法还包括:
在所述主进程启动时,创建第二事件对象;
当检测到所述主进程的异常事件时,记录所述异常事件对应的属性数据,执行目标类型的异常退出指令,其中,所述目标类型的异常退出指令用于指示在主进程退出之前记录到异常事件对应的属性数据;
当执行退出指令时,如果所述退出指令为所述目标类型的异常退出指令,则在所述释放所述全局互斥量之前,所述方法还包括:
将所述第二事件对象设置为触发状态。
一方面,提供了一种上报崩溃事件的装置,所述装置应用于辅助进程,所述装置包括:
调用模块,用于在所述辅助进程启动时,发起对主进程创建并占用的全局互斥量的调用请求;
确定模块,用于当调用到所述主进程释放的所述全局互斥量时,确定所述主进程的退出状态类型,其中,所述退出状态类型为异常退出或正常退出;
上报模块,用于当所述退出状态类型为异常退出时,上报所述主进程的崩溃事件。
可选的,所述调用模块,用于:
当调用到所述主进程释放的所述全局互斥量时,如果所述第一事件对象处于未触发状态,则确定所述主进程的退出状态类型为正常退出,如果所述第一事件对象处于触发状态,则确定所述主进程的退出状态类型为异常退出。
可选的,所述上报模块,还用于:
当调用到所述主进程释放的所述全局互斥量时,如果所述第一事件对象处于未触发状态且所述第二事件对象处于触发状态,则获取所述主进程记录的异常事件对应的属性数据,在上报所述主进程的崩溃事件时,上报所述属性数据。
一方面,提供了一种上报崩溃事件的装置,所述装置应用于主进程,所述装置包括:
创建模块,用于在所述主进程启动时,创建全局互斥量,并在所述主进程运行的过程中保持对所述全局互斥量的占用;
启动模块,用于启动辅助进程;
释放模块,用于当执行退出指令时,释放所述全局互斥量。
可选的,所述主进程的退出指令包括异常退出指令和正常退出指令,所述创建模块还用于:在所述主进程启动时,创建第一事件对象;
当执行退出指令时,如果所述退出指令为正常退出指令,则所述释放模块还用于:将所述第一事件对象设置为触发状态。
可选的,所述异常退出指令包括多种类型的异常退出指令,所述创建模块还用于:在所述主进程启动时,创建第二事件对象;
所述装置还包括记录模块,用于当检测到所述主进程的异常事件时,记录所述异常事件对应的属性数据,执行目标类型的异常退出指令,其中,所述目标类型的异常退出指令用于指示在主进程退出之前记录到异常事件对应的属性数据;
当执行退出指令时,如果所述退出指令为所述目标类型的异常退出指令,则所述释放模块还用于:将所述第二事件对象设置为触发状态。
一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述任一上报崩溃事件的方法。
一方面,提供了一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述任一上报崩溃事件的方法。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,主进程与辅助进程通过系统内核建立联系,利用全局互斥量达到通知的效果,一旦主进程释放全局互斥量,辅助进程即可获知主进程退出并确定是否为异常退出。由于全局互斥量是内核对象,不会受到进程崩溃的影响,因此,通过调用全局互斥量,辅助进程可以第一时间进行确定主进程的退出状态类型的业务逻辑,提高获知并上报崩溃事件的即时性。
并且,无论主进程是正常退出还是异常退出,辅助进程均可获取到全局互斥量,进行确定主进程的退出状态类型的业务逻辑,可以避免产生遗漏崩溃事件的情况,提高上报崩溃事件的全面性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种实施环境图;
图2是本发明实施例提供的一种上报崩溃事件的方法流程图;
图3是本发明实施例提供的一种主进程与辅助进程的关系示意图;
图4是本发明实施例提供的一种上报崩溃事件的方法流程图;
图5是本发明实施例提供的一种上报崩溃事件的方法流程图;
图6是本发明实施例提供的一种上报崩溃事件的装置示意图;
图7是本发明实施例提供的一种上报崩溃事件的装置示意图;
图8是本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种上报崩溃事件的方法,该方法可以由计算机设备实现。
图1是本发明实施例提供的一种实施环境图。该实施环境可以包括多个计算机设备101、用于为该多个计算机设备101提供服务的服务器102,服务器102可以是单个服务器或服务器组。多个计算机设备101通过无线或者有线网络和服务器102连接。计算机设备101中可以安装有各个软件,服务器102可以为上述软件提供后台服务。
当软件启动时,计算机设备101中可以启动进程来执行软件中的各个功能,本发明实施例中将上述进程称为主进程。本发明实施例中还引入了另一进程来监控主进程是否异常退出,称为辅助进程。当辅助进程监控到主进程异常退出时,可以将相应的崩溃事件上报给上述服务器102。
下面将结合图2所示的上报崩溃事件的方法流程图对该方法进行介绍,该方法的处理流程可以包括如下的步骤:
在步骤201中,主进程启动时,创建全局互斥量、第一事件对象和第二事件对象,并在主进程运行的过程中保持对全局互斥量的占用。
其中,全局互斥量、第一事件和第二事件可以是内核对象,允许跨进程使用,例如,全局互斥量可以是mutex(互斥体)对象,名称可以是mastermutex(处于控制地位的互斥体);第一事件对象和第二事件对象可以是event(事件)对象,第一事件对象的名称可以是closeevent(关闭事件),第二事件对象的名称可以是crashevent(崩溃事件)。
全局互斥量同时仅允许一个进程使用。第一事件对象可以用于指示主进程正常退出,可以在主进程执行正常退出指令时触发。第二事件对象可以用于指示主进程异常退出,可以在主进程执行异常退出指令时触发。
计算机设备中启动软件时,可以启动相应的主进程。除了软件需要执行的功能外,主进程还可以创建全局互斥量、第一事件对象和第二事件对象。第一事件对象和第二事件对象在创建完成时,默认设置为未触发状态。
在主进程运行的过程中,保持全局互斥量不释放,也即全局互斥量在主进程运行的过程中保持占用状态。
在步骤202中,主进程启动辅助进程。
在主进程创建全局互斥量、第一事件对象和第二事件对象之后,主进程可以启动辅助进程。创建之后再启动辅助进程,可以保证辅助进程正常调用全局互斥量、第一事件对象和第二事件对象。
在步骤203中,辅助进程启动时,发起对主进程创建并占用的全局互斥量的调用请求,监控第一事件对象和第二事件对象。
辅助进程启动时,可以创建异步任务,并在该异步任务中调用该全局互斥量,也即向系统内核发起对全局互斥量的调用请求。由于主进程在运行过程中一直占用全局互斥量,辅助进程不能使用该全局互斥量,因此,辅助进程在主进程占用全局互斥量时可以处于阻塞状态,等待主进程释放全局互斥量。
辅助进程还可以监控第一事件对象和第二事件对象,等待第一事件和第二事件的触发信号,以便进行不同的业务逻辑。
在步骤204中,当主进程执行正常退出指令时,将第一事件对象设置为触发状态,释放全局互斥量。
主进程可以执行的退出指令包括异常退出指令和正常退出指令。例如,正常退出指令可以是调用exit(退出)函数;异常退出指令可以是调用about(关于)函数。相对应的,主进程的退出状态类型可以包括异常退出和正常退出。
主进程正常退出时,可以执行正常退出指令的业务逻辑。首先可以将第一事件对象设置为触发状态,也即触发第一事件对象,然后再释放全局互斥量,避免辅助进程将后续的业务逻辑执行完毕后才获取到第一事件对象的触发信号,保证辅助进程的业务逻辑能够正常执行。
在步骤205中,在调用到主进程释放的全局互斥量时,如果第一事件对象处于触发状态,则辅助进程确定主进程的退出状态类型为正常退出。
当主进程正常退出时,辅助进程可以首先获取到第一事件对象的触发信号,然后再获取到主进程释放的全局互斥量。当获取到全局互斥量时,辅助进程可以从阻塞状态转换为执行状态。然后,辅助进程可以根据第一事件对象的触发信号,确定主进程的退出状态类型为正常退出。
可选的,辅助进程在确定主进程的退出状态类型为正常退出之后,可以执行退出指令的处理,也即关闭辅助进程,避免对主进程再次启动时造成影响。
上面介绍了主进程正常退出的情况,下面对异常退出的情况进行介绍。本发明实施例中,异常退出可以分为两种情况,第一种情况如下述步骤206-208介绍的,主进程可以触发第二事件对象;第二种情况如下述步骤209-210介绍的,主进程无法触发第二事件对象。
下面对第一种异常退出的情况进行介绍:
在步骤206中,当检测到主进程的异常事件时,主进程记录异常事件对应的属性数据,执行目标类型的异常退出指令。
其中,属性数据可以用于对异常事件进行分析,例如,属性数据可以是产生异常的软件标识、产生时间、指令等。
异常退出指令可以包括多种类型的异常退出指令,也即在产生不同的异常事件时主进程可以执行不同的异常退出指令。目标类型的异常退出指令可以用于指示在主进程退出之前记录到异常事件对应的属性数据,也即,本发明实施例中将记录异常事件对应的属性数据之后,执行的异常退出指令称为目标类型的异常退出指令。
主进程可以具有检测异常的功能。在主进程运行的过程中,如果产生异常事件,且主进程通过上述功能检测到异常,则可以获取对应的属性数据,并且可以存储在计算机设备中。可选的,获取目标数据的处理可以由一个线程来完成。例如,主进程可以通过注册崩溃回调函数setunhandledexceptionfilter的方式,获取主进程崩溃的属性数据。
在步骤207中,当主进程执行目标类型的异常退出指令时,将第二事件对象设置为触发状态,释放全局互斥量。
主进程可以获取到上述属性数据,表明异常事件没有影响到这部分业务逻辑,例如,没有影响到实现获取目标数据的线程。则在获取属性数据之后,主进程可以执行目标类型的异常退出指令,首先可以将第二事件对象设置为触发状态,也即触发第二事件对象,然后再释放全局互斥量。与步骤204同理,步骤207的处理可以保证辅助进程的业务逻辑能够正常执行。
在步骤208中,在调用到主进程释放的全局互斥量时,如果第一事件对象处于未触发状态且第二事件对象处于触发状态,则辅助进程确定主进程的退出状态类型为第一异常退出。
其中,第一异常退出可以用于指示主进程异常退出且获取到异常事件的属性数据。
辅助进程可以首先获取到第二事件对象的触发信号,然后再获取到主进程释放的全局互斥量。当获取到全局互斥量时,辅助进程可以从阻塞状态转换为执行状态。然后,辅助进程可以根据第二事件对象的触发信号,确定主进程的退出状态类型为第一异常退出。
下面对第二种异常退出的情况进行介绍:
在步骤209中,当主进程执行除目标类型之外的异常退出指令时,释放全局互斥量。
主进程产生异常时,如果异常的影响面较广,可能使得主进程无法进行检测异常事件的业务逻辑,进而也无法触发第二事件对象。本发明实施例中对无法触发第二事件对象的具体情况不作限定。
进而,当主进程执行除目标类型之外的异常退出指令时,不会触发第二事件对象,就释放全局互斥量。
在步骤210中,在调用到主进程释放的全局互斥量时,如果第一事件对象和第二事件对象均处于未触发状态,则辅助进程确定主进程的退出状态类型为第二异常退出。
其中,第二异常退出可以用于指示主进程异常退出且未获取到异常事件的属性数据。
此时,辅助进程在获取主进程释放的全局互斥量时,没有获取到第一事件对象或第二事件对象的触发信号。进而,辅助进程可以确定主进程的退出状态类型为第二异常退出。
在步骤211中,当主进程的退出状态类型为异常退出时,辅助进程上报主进程的崩溃事件。
上述第一异常退出和第二异常退出的状态均可称为异常退出的状态。当辅助进程确定出主进程的退出状态为异常退出时,则可以生成相应的崩溃事件,并将该崩溃事件上报给服务器。可选的,辅助进程上报主进程的崩溃事件之后,可以执行退出指令的处理,也即关闭辅助进程。
可选的,当调用到主进程释放的全局互斥量时,如果第一事件对象处于未触发状态且第二事件对象处于触发状态,则获取主进程记录的异常事件对应的属性数据,在上报主进程的崩溃事件时,上报该属性数据。
主进程在获取到属性数据后将属性数据以预设的标识进行存储,或存储到预设的存储地址中,以便辅助进程根据预设的标识或存储地址进行获取。本发明实施例对辅助进程获取属性数据的具体处理不作限定。
也即当主进程的退出状态类型为第一异常退出时,辅助进程在上报崩溃事件的同时,还可以将异常事件对应的属性数据进行上报。
因此,服务器可以接收到收集到属性数据的崩溃事件和未收集到属性数据的崩溃事件。技术人员可以根据属性数据对崩溃事件进行分析,获取崩溃产生的原因,以便对软件进行相应的更新。当然,技术人员还可以根据崩溃事件的总数目衡量软件的运行状态等等。本发明实施例中对如何利用上报的崩溃事件不作限定。
如图3所示的主进程与辅助进程的关系示意图,本发明实施例中,主进程与辅助进程通过系统内核建立联系,利用全局互斥量达到通知的效果,一旦主进程释放全局互斥量,辅助进程即可获知主进程退出并确定是否为异常退出。由于全局互斥量是内核对象,不会受到进程崩溃的影响,因此,通过调用全局互斥量,辅助进程可以第一时间进行确定主进程的退出状态类型的业务逻辑,提高获知并上报崩溃事件的即时性。
并且,无论主进程是正常退出还是异常退出,辅助进程均可获取到全局互斥量,进行确定主进程的退出状态类型的业务逻辑,可以避免产生遗漏崩溃事件的情况,提高上报崩溃事件的全面性。
本发明实施例中,利用第一事件对象来区分是否异常退出,还利用第二事件对象来区分是否获取到异常事件的属性数据,提高了划分崩溃事件的准确性,技术人员对崩溃事件进行分析时,可以提高分析效率。
上述发明实施例中介绍了利用全局互斥量、第一事件对象和第二事件对象来上报崩溃事件的方法,当然,第二事件对象相关的技术方案是一种可选的方案,也可以利用全局互斥量和第一事件对象实现上报崩溃事件的过程。下面将结合图4所示的上报崩溃事件的方法流程图,对该方法进行介绍:
在步骤401中,主进程启动时,创建全局互斥量和第一事件对象,并在主进程运行的过程中保持对全局互斥量的占用。
在步骤402中,主进程启动辅助进程。
在步骤403中,辅助进程启动时,发起对主进程创建并占用的全局互斥量的调用请求,监控第一事件对象。
步骤401-403的具体处理可以与上述步骤201-203同理,此处不再赘述,区别在于,本发明实施例中不对第二事件对象进行创建和调用。
在步骤404中,当主进程执行正常退出指令时,将第一事件对象设置为触发状态,释放全局互斥量。
在步骤405中,在调用到主进程释放的全局互斥量时,如果第一事件对象处于触发状态,则辅助进程确定主进程的退出状态类型为正常退出。
对主进程正常退出的确定过程可以与上述步骤204-205同理,此处不再赘述。
在步骤406中,当主进程执行异常退出指令时,释放全局互斥量。
由于第一事件对象可以用于指示主进程正常退出,则当主进程异常退出时,不会触发第一事件对象,就释放全局互斥量。
在步骤407中,在调用到主进程释放的全局互斥量时,如果第一事件对象处于未触发状态,则辅助进程确定主进程的退出状态类型为异常退出。
当主进程异常退出时,辅助进程获取到全局互斥量时没有获取到第一事件对象的触发信号,则可以确定主进程的退出状态类型为异常退出。
在步骤408中,当主进程的退出状态类型为异常退出时,辅助进程上报主进程的崩溃事件。
本发明实施例中,主进程与辅助进程通过系统内核建立联系,利用全局互斥量达到通知的效果,一旦主进程释放全局互斥量,辅助进程即可获知主进程退出并确定是否为异常退出。由于全局互斥量是内核对象,不会受到进程崩溃的影响,因此,通过调用全局互斥量,辅助进程可以第一时间进行确定主进程的退出状态类型的业务逻辑,提高获知并上报崩溃事件的即时性。
并且,无论主进程是正常退出还是异常退出,辅助进程均可获取到全局互斥量,进行确定主进程的退出状态类型的业务逻辑,可以避免产生遗漏崩溃事件的情况,提高上报崩溃事件的全面性。
本发明实施例中,利用第一事件对象来区分是否异常退出,当第一事件对象触发时,可以确定主进程正常退出;当第一事件对象未触发时,可以确定主进程异常退出,可以提高获知并上报崩溃事件的效率。
上述发明实施例中利用第一事件对象来区分是否异常退出,当然,还可以基于其它方法确定主进程是否异常退出,如图5所示的上报崩溃事件的方法流程图,该方法的处理流程可以包括如下的步骤:
在步骤501中,主进程启动时,创建全局互斥量,并在主进程运行的过程中保持对全局互斥量的占用。
在步骤502中,主进程启动辅助进程。
在步骤503中,辅助进程启动时,发起对主进程创建并占用的全局互斥量的调用请求。
在步骤504中,当主进程执行退出指令时,释放全局互斥量。
在步骤505中,当调用到主进程释放的全局互斥量时,辅助进程确定主进程的退出状态类型。
除了上述发明实施例中介绍的方法,还可以基于其它方法确定主进程的退出状态类型,例如,如果主进程正常的业务处理逻辑为正常退出时关闭辅助进程,而辅助进程获取到主进程释放的全局互斥量时,表明主进程已经退出而没有关闭辅助进程,则辅助进程可以确定主进程的退出状态类型为异常退出。本发明实施例对确定主进程的退出状态类型的具体处理不作限定。
在步骤506中,当主进程的退出状态类型为异常退出时,辅助进程上报主进程的崩溃事件。
步骤501-506的具体处理可以与上述发明实施例同理,此处不再赘述。
本发明实施例中,主进程与辅助进程通过系统内核建立联系,利用全局互斥量达到通知的效果,一旦主进程释放全局互斥量,辅助进程即可获知主进程退出并确定是否为异常退出。由于全局互斥量是内核对象,不会受到进程崩溃的影响,因此,通过调用全局互斥量,辅助进程可以第一时间进行确定主进程的退出状态类型的业务逻辑,提高获知并上报崩溃事件的即时性。
并且,无论主进程是正常退出还是异常退出,辅助进程均可获取到全局互斥量,进行确定主进程的退出状态类型的业务逻辑,可以避免产生遗漏崩溃事件的情况,提高上报崩溃事件的全面性。
基于相同的技术构思,本发明实施例还提供了一种上报崩溃事件的装置,该装置可以配置在上述计算机设备中,用于实现上述辅助进程。如图6所示,该装置包括:
调用模块610,用于在所述辅助进程启动时,发起对主进程创建并占用的全局互斥量的调用请求;
确定模块620,用于当调用到所述主进程释放的所述全局互斥量时,确定所述主进程的退出状态类型,其中,所述退出状态类型为异常退出或正常退出;
上报模块630,用于当所述退出状态类型为异常退出时,上报所述主进程的崩溃事件。
可选的,所述调用模块610还用于:
当调用到所述主进程释放的所述全局互斥量时,如果所述第一事件对象处于未触发状态,则确定所述主进程的退出状态类型为正常退出,如果所述第一事件对象处于触发状态,则确定所述主进程的退出状态类型为异常退出。
可选的,所述上报模块630还用于:
当调用到所述主进程释放的所述全局互斥量时,如果所述第一事件对象处于未触发状态且所述第二事件对象处于触发状态,则获取所述主进程记录的异常事件对应的属性数据,在上报所述主进程的崩溃事件时,上报所述属性数据。
基于相同的技术构思,本发明实施例还提供了一种上报崩溃事件的装置,该装置可以配置在上述计算机设备中,用于实现上述主进程。如图7所示,该装置包括:
创建模块710,用于在所述主进程启动时,创建全局互斥量,并在所述主进程运行的过程中保持对所述全局互斥量的占用;
启动模块720,用于启动辅助进程;
释放模块730,用于当执行退出指令时,释放所述全局互斥量。
可选的,所述主进程的退出指令包括异常退出指令和正常退出指令,所述创建模块710还用于:在所述主进程启动时,创建第一事件对象;
当执行退出指令时,如果所述退出指令为正常退出指令,则所述释放模块730还用于:将所述第一事件对象设置为触发状态。
可选的,所述异常退出指令包括多种类型的异常退出指令,所述创建模块710还用于:在所述主进程启动时,创建第二事件对象;
所述装置还包括记录模块740,用于当检测到所述主进程的异常事件时,记录所述异常事件对应的属性数据,执行目标类型的异常退出指令,其中,所述目标类型的异常退出指令用于指示在主进程退出之前记录到异常事件对应的属性数据;
当执行退出指令时,如果所述退出指令为所述目标类型的异常退出指令,则所述释放模块730还用于:将所述第二事件对象设置为触发状态。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
上述发明实施例中,主进程与辅助进程通过系统内核建立联系,利用全局互斥量达到通知的效果,一旦主进程释放全局互斥量,辅助进程即可获知主进程退出并确定是否为异常退出。由于全局互斥量是内核对象,不会受到进程崩溃的影响,因此,通过调用全局互斥量,辅助进程可以第一时间进行确定主进程的退出状态类型的业务逻辑,提高获知并上报崩溃事件的即时性。
并且,无论主进程是正常退出还是异常退出,辅助进程均可获取到全局互斥量,进行确定主进程的退出状态类型的业务逻辑,可以避免产生遗漏崩溃事件的情况,提高上报崩溃事件的全面性。
需要说明的是:上述实施例提供的上报崩溃事件的装置在上报崩溃事件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的上报崩溃事件的装置与上报崩溃事件的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8是本发明实施例提供的一种计算机设备的结构示意图,该计算机设备800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)801和一个或一个以上的存储器802,其中,所述存储器802中存储有至少一条指令,所述至少一条指令由所述处理器801加载并执行以实现上述辅助进程或主进程的上报崩溃事件的方法步骤。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由计算机设备中的处理器执行以完成上述辅助进程或主进程的上报崩溃事件的方法。例如,所述计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于上述计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。