CN113282436A - 事件处理方法、装置、设备以及存储介质 - Google Patents
事件处理方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN113282436A CN113282436A CN202110558505.XA CN202110558505A CN113282436A CN 113282436 A CN113282436 A CN 113282436A CN 202110558505 A CN202110558505 A CN 202110558505A CN 113282436 A CN113282436 A CN 113282436A
- Authority
- CN
- China
- Prior art keywords
- stack information
- thread
- current thread
- current
- task
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 27
- 230000002159 abnormal effect Effects 0.000 claims abstract description 47
- 238000012545 processing Methods 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims abstract description 21
- 238000004806 packaging method and process Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 230000010365 information processing Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 20
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000004888 barrier function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
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
本公开提供一种事件处理方法、装置、设备以及存储介质,涉及网络信息处理技术领域,以至少解决现有技术中无法根据系统堆栈的信息来确定崩溃的位置的问题。该方法包括:当确定当前线程发生异常事件时,获取当前线程的标识;根据线程与堆栈信息的关联关系,基于当前线程的标识获取与当前线程对应的第一关联堆栈信息;第一关联堆栈信息为当前线程切换前的第一线程的堆栈信息;关联关系包括线程的标识与其关联的堆栈信息;获取当前线程的第二关联堆栈信息;第二关联堆栈信息为当前线程的堆栈信息;对第一关联堆栈信息和第二关联堆栈信息执行拼接处理,得到最终堆栈信息,最终堆栈信息用于定位异常事件。
Description
技术领域
本公开涉及网络信息处理技术领域,尤其涉及一种事件处理方法、装置、设备以及存储介质。
背景技术
通常在苹果移动设备操作系统(iphone operation system,IOS)中发生线程崩溃时,崩溃捕获工具会暂停当前IOS系统中运行的所有线程,并对线程进行堆栈回溯,以定位崩溃位置。但是,有些时候,被暂停的所有线程的崩溃堆栈中并没有与应用程序(application,APP)相关的线程的堆栈(称为用户堆栈)信息,即崩溃堆栈皆为系统堆栈。系统堆栈对应的代码和数据通常是闭源(closed source)的,这样,就无法根据系统堆栈的信息来确定崩溃的位置。
发明内容
本公开提供一种事件处理方法、装置、设备以及存储介质,以至少解决现有技术中无法根据系统堆栈的信息来确定崩溃的位置的问题。本公开的技术方案如下:
根据本公开的第一方面,提供一种事件处理方法,该事件处理方法包括:当确定当前线程发生异常事件时,获取当前线程的标识;根据线程与堆栈信息的关联关系,基于当前线程的标识获取与当前线程对应的第一关联堆栈信息。之后,获取当前线程的第二关联堆栈信息,并对第一关联堆栈信息和第二关联堆栈信息执行拼接处理,得到最终堆栈信息,最终堆栈信息用于定位异常事件。其中,上述第一关联堆栈信息为当前线程切换前的第一线程的堆栈信息,关联关系包括线程的标识与其关联的堆栈信息,第二关联堆栈信息为当前线程的堆栈信息。
可选的,在上述“确定当前线程发生异常事件”之前,该事件处理方法还包括:当检测到第一线程向当前线程切换时,对目标任务进行封装处理,得到当前任务,并通过当前线程执行当前任务。其中,目标任务为待执行的任务,当前任务用于在执行目标任务之前,生成关联关系,在执行完毕目标任务之后,删除关联关系。
可选的,该事件处理方法还包括:当检测到第一线程向当前线程切换时,获取第一关联堆栈信息。上述“通过当前线程执行当前任务”的方法,包括:获取当前线程的标识,并根据当前线程的标识和第一关联堆栈信息生成关联关系;以及,当确定当前线程执行完毕目标任务,且未发生异常事件时,删除关联关系。
可选的,关联关系为键值对。
根据本公开的第二方面,提供一种事件处理装置,该事件处理装置包括获取模块和处理模块。获取模块,被配置为执行当确定当前线程发生异常事件时,获取当前线程的标识;获取模块,还被配置为执行根据线程与堆栈信息的关联关系,基于当前线程的标识获取与当前线程对应的第一关联堆栈信息;第一关联堆栈信息为当前线程切换前的第一线程的堆栈信息;关联关系包括线程的标识与其关联的堆栈信息;获取模块,还被配置为执行获取当前线程的第二关联堆栈信息;第二关联堆栈信息为当前线程的堆栈信息;处理模块,被配置为执行对获取模块获取到的第一关联堆栈信息和第二关联堆栈信息执行拼接处理,得到最终堆栈信息,最终堆栈信息用于定位异常事件。
可选的,处理模块,还被配置为执行:当检测到第一线程向当前线程切换时,对目标任务进行封装处理,得到当前任务,并通过当前线程执行当前任务。其中,目标任务为待执行的任务,当前任务用于在执行目标任务之前,生成关联关系,在执行完毕目标任务之后,删除关联关系。
可选的,获取模块,还被配置为执行当检测到第一线程向当前线程切换时,获取第一关联堆栈信息。处理模块,具体被配置为执行:获取当前线程的标识;根据当前线程的标识和第一关联堆栈信息生成关联关系;以及,当确定当前线程执行完毕目标任务,且未发生异常事件时,删除关联关系。
可选的,关联关系为键值对。
根据本公开的第三方面,提供一种电子设备,包括:处理器和用于存储处理器可执行的指令的存储器;其中,处理器被配置为执行指令,以实现如上述第一方面中任一种可选的事件处理方法。
根据本公开的第四方面,提供一种计算机可读存储介质,计算机可读存储介质上存储有指令,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述第一方面中任一种可选的事件处理方法。
根据本公开的第五方面,提供一种计算机程序产品,包含指令,当该计算机程序产品中的指令由电子设备的处理器执行时,实现如上述第一方面中任一种可选的事件处理方法。
本公开实施例提供的技术方案至少带来以下有益效果:
上述方案中,在发生异常事件时,读取关联关系中当前线程对应的第一关联堆栈信息,并获取当前线程的堆栈信息。然后,将第一关联堆栈信息和当前线程的堆栈信息进行拼接处理,以便于后续定位异常事件。这样,在当前线程的堆栈为系统堆栈,代码和数据闭源时,可以使用当前线程切换前的第一线程的堆栈信息(第一关联堆栈信息)的代码和数据实现异常事件的定位,能够为异常事件的定位提供更多有效信息,避免了无法根据系统堆栈的信息来定位异常事件的问题,提高了定位异常事件的准确率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种电子设备的结构示意图。
图2是根据一示例性实施例示出的一种事件处理方法的流程图之一。
图3是根据一示例性实施例示出的一种事件处理方法的流程图之二。
图4是根据一示例性实施例示出的一种事件处理装置的结构框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。本公开所涉及的数据可以为经用户授权或者经过各方充分授权的数据。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
还应当理解的是,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其他特征、整体、步骤、操作、元素和/或组件的存在或添加。
首先,对本公开实施例的应用场景进行介绍。
本公开实施例的事件处理方法,应用于电子设备定位异常事件的场景中,其中,该电子设备的操作系统为IOS系统。在IOS系统中,通常使用任务分发库(grand centraldispatch,GCD)来管理线程,GCD的核心是分发队列(dispatch queue),dispatch queue是一个对象,它可以接受任务,并将任务以先到先执行的顺序来执行。另外,在GCD中,还提供了专门的应用程序接口(application program interface,API)来分发任务,例如,dispatch_async,dispatch_after,dispatch_barrier_async等接口,同时提供了与接口对应的C语言函数(如dispatch_async_f、dispatch_after_f、dispatch_barrier_async_f等),用来调用线程的切换,在线程切换成功时,前一个线程的堆栈信息就会丢失。
通常在IOS系统中发生线程崩溃时,崩溃捕获工具会暂停当前运行的所有线程,并对线程进行堆栈回溯,以定位崩溃位置。但是,有些时候,被暂停的所有线程的崩溃堆栈中并没有与APP相关的线程的堆栈(称为用户堆栈)信息,即崩溃堆栈皆为系统堆栈。系统堆栈对应的代码和数据通常是闭源的,并且与该系统堆栈对应的线程的前一个线程的堆栈信息也已经丢失。这样,就无法根据系统堆栈的信息来确定崩溃的位置。
为了解决上述问题,本公开实施例提供一种事件处理方法,应用于电子设备,当确定发生异常事件时,获取关联关系中与当前线程对应的第一关联堆栈信息。之后,获取当前线程的堆栈信息,并对第一关联堆栈信息和当前线程的堆栈信息执行拼接处理,得到最终堆栈信息,最终堆栈信息用于定位异常事件。能够为定位异常事件提供更多有效信息,避免了无法根据系统堆栈的信息来定位异常事件的问题,提高了定位时的准确率。
需要说明的是,本申请实施例提供的事件处理方法应用于上述电子设备,即本申请实施例提供的事件处理方法的执行主体可以为事件处理装置,事件处理装置可以为上述电子设备。
图1是根据一示例性实施例示出的一种电子设备的结构示意图。如图1所示,该电子设备可以包括至少一个处理器11,存储器12、通信接口13、通信总线14。下面结合图1对电子设备的各个构成部件进行具体的介绍:
处理器11,可以是一个处理器,也可以是多个处理元件的统称。例如,处理器11是一个中央处理器(central processing unit,CPU),也可以是特定集成电路(applicationspecific integrated circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)。
其中,处理器11可以通过运行或执行存储在存储器12内的软件程序,以及调用存储在存储器12内的数据,执行各种功能。在具体的实现中,作为一种实施例,处理器11可以包括一个或多个CPU,例如图1中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,该电子设备可以包括多个处理器,例如图1中所示的处理器11和处理器15。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
存储器12可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器12可以是独立存在,通过通信总线14与处理器11相连接。存储器12也可以和处理器11集成在一起。其中,存储器12用于存储执行本申请方法的软件程序,并由处理器11来控制执行。
通信接口13,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
通信总线14,可以是工业标准体系结构(industry standard architecture,ISA)总线、外部设备互连(peripheral component,PCI)总线或扩展工业标准体系结构(extended industry standard architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图1中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
需要指出的是,图1中示出的部件并不构成对电子设备的限定,除图1所示部件之外,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
具体的,处理器11通过运行或执行存储在存储器12内的软件程序和/或模块,以及调用存储在存储器12内的数据,执行如下功能:
当确定当前线程发生异常事件时,获取当前线程的标识;根据线程与堆栈信息的关联关系,基于当前线程的标识获取与当前线程对应的第一关联堆栈信息。之后,获取当前线程的第二关联堆栈信息,并对第一关联堆栈信息和第二关联堆栈信息执行拼接处理,得到最终堆栈信息,最终堆栈信息用于定位异常事件。其中,上述第一关联堆栈信息为当前线程切换前的第一线程的堆栈信息,关联关系包括线程的标识与其关联的堆栈信息,第二关联堆栈信息为当前线程的堆栈信息。
需要说明的是,电子设备可以为手机、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本等,本申请实施例对该电子设备的具体形态不作特殊限制。
下面结合图1所示的电子设备,通过图2对本申请实施例提供的事件处理方法进行描述。
图2是根据一示例性实施例示出的一种事件处理方法的流程图。如图2所示,该方法可以包括以下步骤。
步骤21:电子设备当确定当前线程发生异常事件时,获取当前线程的标识,并根据线程与堆栈信息的关联关系,基于当前线程的标识获取与当前线程对应的第一关联堆栈信息。
其中,第一关联堆栈信息为当前线程切换前的第一线程的堆栈信息;关联关系包括线程的标识、以及与线程的标识关联的堆栈信息。异常事件可以包括系统崩溃、页面卡顿等事件。
这样,电子设备能够根据当前线程的标识,从关联关系中读取到与当前线程对应的第一关联堆栈信息,以便于后续根据第一关联堆栈信息的代码和数据实现异常事件的定位,避免了无法根据系统堆栈的信息来定位异常事件的问题,提高了定位时的准确率。
可选的,关联关系为键值对。
具体的,键值对可以为全局键值对,在该全局键值对中,线程的标识为key,堆栈信息为value。
上述方案中,使用键值对的形式存储关联关系,能够直接根据当前线程的标识,读取到第一关联堆栈信息。避免了当前线程的堆栈为系统堆栈时,无法定位异常事件的问题,高了定位时的准确率。
可选的,关联关系也可以为数据表。
步骤22:电子设备获取当前线程的第二关联堆栈信息。
其中,第二关联堆栈信息为当前线程的堆栈信息。
具体的,电子设备通过第一函数(如backtrace函数)获取第二关联堆栈信息。例如,在IOS系统的GCD中,电子设备在确定发生异常事件时,通过backtrace函数获取第二关联堆栈信息。
步骤23:电子设备对第一关联堆栈信息和第二关联堆栈信息执行拼接处理,得到最终堆栈信息。
其中,最终堆栈信息用于定位异常事件。
示例性的,第一关联堆栈信息为B1,第二关联堆栈信息为B2,电子设备通过拼接B1+B2获得完整的崩溃堆栈(最终堆栈信息)。
可选的,电子设备显示最终堆栈信息,或者,电子设备向服务器发送最终堆栈信息,以便于相关人员根据最终堆栈信息确定异常事件的位置。
本公开实施例提供的技术方案至少带来以下有益效果:
上述方案中,在发生异常事件时,读取关联关系中当前线程对应的第一关联堆栈信息,并获取当前线程的堆栈信息。然后,将第一关联堆栈信息和当前线程的堆栈信息进行拼接处理,以便于后续定位异常事件。这样,在当前线程的堆栈为系统堆栈,代码和数据闭源时,可以使用当前线程切换前的第一线程的堆栈信息(第一关联堆栈信息)的代码和数据实现异常事件的定位,能够为异常事件的定位提供更多有效信息,避免了无法根据系统堆栈的信息来定位异常事件的问题,提高了定位异常事件的准确率。
可选的,如图3所示,在步骤21之前,该事件处理方法还包括如下步骤。
步骤20a:电子设备当检测到第一线程向当前线程切换时,对目标任务进行封装处理,得到当前任务。
首先,电子设备当检测到第一线程要向当前线程切换的时候,从目标接口拦截目标任务。
其中,目标任务为待执行的任务。目标接口用于分发该目标任务。例如,在IOS系统的GCD中,目标接口为专门的API,用来分发任务。
在一种实现方式中,电子设备当检测到第一线程要向当前线程切换的时候,通过钩子函数从目标接口拦截目标任务。
上述方案中,能够将目标任务从目标接口中拦截,以便于后续对目标任务进行封装(为目标任务加入生成关联关系的第一关联堆栈信息)。避免了第一线程切换到当前线程之后,第一关联堆栈信息丢失的问题,提高了异常事件定位时的准确率。
在一种实现方式中,电子设备当检测到第一线程要向当前线程切换的时候,通过第二函数(如backtrace函数)获取第一关联堆栈信息,以便于在执行当前任务的过程中生成关联关系。例如,在IOS系统的GCD中,电子设备在确定第一线程要向当前线程切换时,通过backtrace函数获取第一关联堆栈信息。
之后,电子设备对目标任务进行封装处理,得到当前任务。
其中,当前任务包括第一关联堆栈信息、当前线程的标识以及目标任务。当前任务用于在执行目标任务之前,生成关联关系,在执行完毕目标任务之后,删除关联关系。
具体的,电子设备在拦截到目标任务之后,对目标任务进行封装,得到当前任务。示例性的,当前任务的结构如下:
hawkeye_orig_dispatch_barrier_async(queue,^{//拦截目标任务。
thread_tthread_id=hawkeye_get_thread_id();//获取当前线程的标识。
hawkeye_gcd_queue_item_dequeue_hook(thread_id,backtrace);
//使用钩子函数勾住当前线程的标识和第一关联堆栈信息。
block();//调用目标任务。
hawkeye_gcd_queue_item_complete_hook(thread_id);
//删除关联关系。
})。
这样,电子设备在GCD线程调度时,会从队列中将当前任务取出执行。
步骤20b:电子设备通过当前线程执行当前任务。
具体的,电子设备在通过当前线程执行当前任务的过程中,获取当前线程的标识,并根据当前线程的标识和第一关联堆栈信息生成关联关系。
示例性的,第一关联堆栈信息为B1,当前线程的标识为T2,则根据当前线程的标识和第一关联堆栈信息生成关联关系,可以是将T2与B1用键值对的形式保存在全局键值对中,key为T2,value为B1。
然后,电子设备执行目标任务,当确定当前线程执行目标任务的过程中,发生异常事件时,进入步骤21-步骤23。当确定当前线程执行完毕目标任务,且未发生异常事件时,删除关联关系。
上述方案中,电子设备根据第一关联堆栈信息和当前线程的标识生成关联关系。这样,在当前线程发生异常事件时,便可以根据关联关系,获取到第一线程的堆栈信息,从而提高确定故障位置时的准确率。另外,电子设备在当前线程执行完目标任务,且未发生异常事件时,删除关联关系。能够避免生成的关联关系过多占用系统空间的问题,节省了系统资源。
除此之外,将目标任务封装成当前任务(为目标任务加入生成关联关系的第一关联堆栈信息)进行执行。避免了在第一线程切换到当前线程的过程中,第一关联堆栈信息丢失的问题,提高了异常事件定位时的准确率。
以上结合图2-图3详细说明了本公开实施例提供的方法。为了实现上述功能,事件处理装置包含了执行各个功能相应的硬件结构和/或软件模块,这些执行各个功能相应的硬件结构和/或软件模块可以构成一个电子设备。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本公开能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
本公开实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,电子设备可以包括事件处理装置,事件处理装置可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本公开实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
以下,结合图4详细说明本公开实施例提供的事件处理装置。应理解,装置实施例的描述与方法实施例的描述相互对应,因此,未详细描述的内容可以参见上文方法实施例,为了简洁,这里不再赘述。
图4是根据一示例性实施例示出的一种事件处理装置的结构示意图,应用于电子设备,参见图4所示,该事件处理装置包括:获取模块41和处理模块42。
获取模块41,被配置为执行被配置为执行当确定当前线程发生异常事件时,获取当前线程的标识,并根据线程与堆栈信息的关联关系,基于当前线程的标识获取与当前线程对应的第一关联堆栈信息;第一关联堆栈信息为当前线程切换前的第一线程的堆栈信息;关联关系包括线程的标识与其关联的堆栈信息。获取模块41,还被配置为执行获取当前线程的第二关联堆栈信息;第二关联堆栈信息为当前线程的堆栈信息。例如,参照图2所示,获取模块41,被配置为执行步骤21-步骤22。处理模块42,被配置为执行对获取模块41获取到的第一关联堆栈信息和第二关联堆栈信息执行拼接处理,得到最终堆栈信息,最终堆栈信息用于定位异常事件。例如,参照图2所示,处理模块42,被配置为执行步骤23。
可选的,处理模块42,还被配置为执行:当检测到第一线程向当前线程切换时,对目标任务进行封装处理,得到当前任务;目标任务为待执行的任务;通过当前线程执行当前任务;当前任务用于在执行目标任务之前,生成关联关系,在执行完毕目标任务之后,删除关联关系。例如,参照图3所示,处理模块42,还被配置为执行步骤20a-步骤20b。
可选的,获取模块41,还被配置为执行当检测到第一线程向当前线程切换时,获取第一关联堆栈信息;处理模块42,具体被配置为执行:获取当前线程的标识;根据当前线程的标识和第一关联堆栈信息生成关联关系;以及,当确定当前线程执行完毕目标任务,且未发生异常事件时,删除关联关系。
可选的,关联关系为键值对。
当然,本申请实施例提供的事件处理装置包括但不限于上述模块。
在实际实现时,获取模块41和处理模块42可以由图1所示的处理器101调用存储器102中的程序代码来实现。其具体的执行过程可参考图2-图3中所示的任一种事件处理方法部分的描述,这里不再赘述。
本公开另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当指令在电子设备上运行时,该电子设备执行如上述图2-图3中所示的任一种事件处理方法。
在本公开的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中。电子设备的处理器可以从计算机可读存储介质读取该计算机执行指令,并执行该计算机执行指令使得电子设备,执行如图2-图3中所示的任一种事件处理方法。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种事件处理方法,其特征在于,包括:
当确定当前线程发生异常事件时,获取所述当前线程的标识;
根据线程与堆栈信息的关联关系,基于所述当前线程的标识获取与所述当前线程对应的第一关联堆栈信息;所述第一关联堆栈信息为所述当前线程切换前的第一线程的堆栈信息;所述关联关系包括线程的标识与其关联的堆栈信息;
获取所述当前线程的第二关联堆栈信息;所述第二关联堆栈信息为所述当前线程的堆栈信息;
对所述第一关联堆栈信息和所述第二关联堆栈信息执行拼接处理,得到最终堆栈信息,所述最终堆栈信息用于定位所述异常事件。
2.根据权利要求1所述的事件处理方法,其特征在于,在确定当前线程发生异常事件之前,所述事件处理方法还包括:
当检测到所述第一线程向所述当前线程切换时,对目标任务进行封装处理,得到所述当前任务;所述目标任务为待执行的任务;
通过所述当前线程执行所述当前任务;所述当前任务用于在执行所述目标任务之前,生成所述关联关系,在执行完毕所述目标任务之后,删除所述关联关系。
3.根据权利要求2所述的事件处理方法,其特征在于,所述事件处理方法还包括:
当检测到所述第一线程向所述当前线程切换时,获取所述第一关联堆栈信息;
所述通过所述当前线程执行所述当前任务,包括:
获取所述当前线程的标识;根据所述当前线程的标识和所述第一关联堆栈信息生成所述关联关系;
以及,
当确定所述当前线程执行完毕所述目标任务,且未发生所述异常事件时,删除所述关联关系。
4.根据权利要求1-3任一项所述的事件处理方法,其特征在于,
所述关联关系为键值对。
5.一种事件处理装置,其特征在于,包括:
获取模块,被配置为执行当确定当前线程发生异常事件时,获取所述当前线程的标识;
所述获取模块,还被配置为执行根据线程与堆栈信息的关联关系,基于所述当前线程的标识获取与所述当前线程对应的第一关联堆栈信息;所述第一关联堆栈信息为所述当前线程切换前的第一线程的堆栈信息;所述关联关系包括线程的标识与其关联的堆栈信息;
所述获取模块,还被配置为执行获取所述当前线程的第二关联堆栈信息;所述第二关联堆栈信息为所述当前线程的堆栈信息;
处理模块,被配置为执行对所述获取模块获取到的所述第一关联堆栈信息和所述第二关联堆栈信息执行拼接处理,得到最终堆栈信息,所述最终堆栈信息用于定位所述异常事件。
6.根据权利要求5所述的事件处理装置,其特征在于,
所述处理模块,还被配置为执行:
当检测到所述第一线程向所述当前线程切换时,对目标任务进行封装处理,得到所述当前任务;所述目标任务为待执行的任务;
通过所述当前线程执行所述当前任务;所述当前任务用于在执行所述目标任务之前,生成所述关联关系,在执行完毕所述目标任务之后,删除所述关联关系。
7.根据权利要求6所述的事件处理装置,其特征在于,
所述获取模块,还被配置为执行当检测到所述第一线程向所述当前线程切换时,获取所述第一关联堆栈信息;
所述处理模块,具体被配置为执行:
获取所述当前线程的标识;根据所述当前线程的标识和所述第一关联堆栈信息生成所述关联关系;
以及,
当确定所述当前线程执行完毕所述目标任务,且未发生所述异常事件时,删除所述关联关系。
8.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1-4中任一项所述的事件处理方法。
9.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1-4中任一项所述的事件处理方法。
10.一种计算机程序产品,包括计算机指令,其特征在于,当所述计算机指令被电子设备执行时,实现如权利要求1-4中任一项所述的事件处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110558505.XA CN113282436A (zh) | 2021-05-21 | 2021-05-21 | 事件处理方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110558505.XA CN113282436A (zh) | 2021-05-21 | 2021-05-21 | 事件处理方法、装置、设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113282436A true CN113282436A (zh) | 2021-08-20 |
Family
ID=77280629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110558505.XA Pending CN113282436A (zh) | 2021-05-21 | 2021-05-21 | 事件处理方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113282436A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114168880A (zh) * | 2021-11-30 | 2022-03-11 | 北京达佳互联信息技术有限公司 | 一种网页状态确定方法、装置、设备及存储介质 |
CN115794604A (zh) * | 2022-10-14 | 2023-03-14 | 寒武纪行歌(南京)科技有限公司 | 数据生成方法、装置、设备、介质及程序产品 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164322A (zh) * | 2013-04-15 | 2013-06-19 | 腾讯科技(深圳)有限公司 | 一种程序崩溃的签名方法和装置 |
CN105843741A (zh) * | 2016-03-24 | 2016-08-10 | 腾讯科技(深圳)有限公司 | 应用程序的信息处理方法和装置 |
US9582312B1 (en) * | 2015-02-04 | 2017-02-28 | Amazon Technologies, Inc. | Execution context trace for asynchronous tasks |
CN109871290A (zh) * | 2019-03-07 | 2019-06-11 | 腾讯科技(深圳)有限公司 | 应用于Java的调用堆栈追踪方法、装置和存储介质 |
CN110618940A (zh) * | 2019-09-19 | 2019-12-27 | 腾讯科技(深圳)有限公司 | 堆栈信息追踪方法、装置、计算机可读介质及计算装置 |
CN111708655A (zh) * | 2020-06-19 | 2020-09-25 | 北京达佳互联信息技术有限公司 | 一种应用程序崩溃处理方法、装置及系统 |
-
2021
- 2021-05-21 CN CN202110558505.XA patent/CN113282436A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164322A (zh) * | 2013-04-15 | 2013-06-19 | 腾讯科技(深圳)有限公司 | 一种程序崩溃的签名方法和装置 |
US9582312B1 (en) * | 2015-02-04 | 2017-02-28 | Amazon Technologies, Inc. | Execution context trace for asynchronous tasks |
CN105843741A (zh) * | 2016-03-24 | 2016-08-10 | 腾讯科技(深圳)有限公司 | 应用程序的信息处理方法和装置 |
CN109871290A (zh) * | 2019-03-07 | 2019-06-11 | 腾讯科技(深圳)有限公司 | 应用于Java的调用堆栈追踪方法、装置和存储介质 |
CN110618940A (zh) * | 2019-09-19 | 2019-12-27 | 腾讯科技(深圳)有限公司 | 堆栈信息追踪方法、装置、计算机可读介质及计算装置 |
CN111708655A (zh) * | 2020-06-19 | 2020-09-25 | 北京达佳互联信息技术有限公司 | 一种应用程序崩溃处理方法、装置及系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114168880A (zh) * | 2021-11-30 | 2022-03-11 | 北京达佳互联信息技术有限公司 | 一种网页状态确定方法、装置、设备及存储介质 |
CN115794604A (zh) * | 2022-10-14 | 2023-03-14 | 寒武纪行歌(南京)科技有限公司 | 数据生成方法、装置、设备、介质及程序产品 |
CN115794604B (zh) * | 2022-10-14 | 2024-04-19 | 寒武纪行歌(南京)科技有限公司 | 数据生成方法、装置、设备、介质及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10509585B2 (en) | Data synchronization method, apparatus, and system | |
US11099889B2 (en) | Method-call-chain tracking method, electronic device, and computer readable storage medium | |
CN113282436A (zh) | 事件处理方法、装置、设备以及存储介质 | |
CN109688191B (zh) | 流量调度方法及通信装置 | |
CN112817995B (zh) | 数据处理方法和装置、电子设备及存储介质 | |
US11853767B2 (en) | Inter-core data processing method, system on chip and electronic device | |
EP3329374A1 (en) | System and method for trusted operability when moving between network functions virtualization states | |
US10943160B2 (en) | Dynamic graphic code implementation method and apparatus | |
CN107479981B (zh) | 一种基于异步调用实现同步调用的处理方法及装置 | |
CN110599305A (zh) | 业务处理方法、装置及存储介质 | |
CN107122656B (zh) | 一种通过自调试防止外部调试的方法和装置 | |
WO2020253045A1 (zh) | 配置化的数据转发异常补处理方法、装置及可读存储介质 | |
CN108776633B (zh) | 监控进程运行的方法、终端设备及计算机可读存储介质 | |
CN106874020B (zh) | 启动插件的方法及装置 | |
CN111294377B (zh) | 一种依赖关系的网络请求发送方法、终端装置及存储介质 | |
CN108197029B (zh) | 一种获取进程信息的方法和设备 | |
CN109257235B (zh) | 网络异常恢复方法、装置、设备及计算机可读存储介质 | |
CN110865848B (zh) | 组件拦截方法及终端设备 | |
US9430338B2 (en) | Method and computing device for recording log entries | |
US9348667B2 (en) | Apparatus for managing application program and method therefor | |
CN110489392A (zh) | 多租户间的数据访问方法、装置、系统、存储介质及设备 | |
CN110968471A (zh) | 一种程序崩溃问题上报方法、存储介质、电子设备及系统 | |
CN110677465B (zh) | 一种分布式锁的控制方法及装置 | |
CN112667651A (zh) | 一种数据通信方法及装置 | |
CN113472563B (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 |