CN108287769A - 一种信息处理方法及装置 - Google Patents

一种信息处理方法及装置 Download PDF

Info

Publication number
CN108287769A
CN108287769A CN201810168610.0A CN201810168610A CN108287769A CN 108287769 A CN108287769 A CN 108287769A CN 201810168610 A CN201810168610 A CN 201810168610A CN 108287769 A CN108287769 A CN 108287769A
Authority
CN
China
Prior art keywords
abnormality processing
module
client
collapse
execution module
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.)
Granted
Application number
CN201810168610.0A
Other languages
English (en)
Other versions
CN108287769B (zh
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201810168610.0A priority Critical patent/CN108287769B/zh
Publication of CN108287769A publication Critical patent/CN108287769A/zh
Application granted granted Critical
Publication of CN108287769B publication Critical patent/CN108287769B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

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

一种信息处理方法及装置
技术领域
本申请涉及信息处理技术领域,尤其涉及一种信息处理方法及装置。
背景技术
在计算机系统中,当操作系统或某个客户端的应用程序运行时,常常会遇到各种各样的异常,例如,除零、非法内存访问、文件打开错误、内存不足、磁盘读写错误、外设操作失败等。为了保证应用程序在遇到异常时仍能够健壮稳定地继续运行,操作系统会对运行在其中的进程提供一次补救的机会来处理异常,这种机制常被称为异常处理机制。
软件开发人员可以通过这种异常处理机制来了解应用程序是否发生了异常,当异常发生时,判断应用程序是可以继续执行,或是不能继续执行。但是,目前windows操作系统中的异常处理机制并没有针对异常处理的结果提供一个准确上报的方法。因此,如何准确的感知异常是否处理完毕、应用程序是否能够继续执行,成为软件开发中的关键问题。
发明内容
有鉴于此,本发明提供了一种信息处理方法及装置,能够有效、准确的感知客户端的进程在运行过程中出现异常后发生的崩溃,提高了用户终端运行的稳定性和资源利用率。
本发明的技术方案是这样实现的:
本发明提供了一种信息处理方法,应用于客户端,包括:
当所述客户端被启动时,创建并运行所述客户端的进程;
监测异常处理执行模块,所述异常处理执行模块用于处理在所述进程中发生的至少一个异常;
根据监测到的所述异常处理执行模块的运行状态,针对所述进程设置异常处理标记;及,
根据所述异常处理标记判断所述进程是否崩溃。
本发明还提供了一种信息处理装置,所述装置位于客户端内,当所述客户端被启动时,创建并运行所述客户端的进程,所述装置包括:
监测模块,用于监测异常处理执行模块,所述异常处理执行模块用于处理在所述进程中发生的至少一个异常;
设置模块,用于根据所述监测模块监测到的所述异常处理执行模块的运行状态,针对所述进程设置异常处理标记;及,
判断模块,用于根据所述设置模块设置的异常处理标记判断所述进程是否崩溃。
此外,本发明还提供了一种计算机可读存储介质,存储有计算机可读指令,可以使至少一个处理器执行本申请实施例中所述的方法。
与现有技术相比,本发明实施例提供了一种通用于各类客户端的崩溃感知方法,可以在不获知客户端代码的前提下,通过接管操作系统的部分功能(即异常处理执行模块),不破坏原有的异常处理机制,准确的判断出异常处理流程对异常处理的最终结果,有效的监控客户端的运营质量,避免事故和突发事件,提高了用户终端运行的稳定性和资源利用率。
附图说明
为了更清楚的说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。其中,
图1为本发明一实施例的信息处理系统的结构示意图;
图2为依据本发明一实施例的信息处理方法的示例性流程图;
图3为依据本发明另一实施例的信息处理方法的示例性流程图;
图4为依据本发明又一实施例的信息处理方法的示例性流程图;
图5为依据本发明一实施例的崩溃统计数据的示意图;
图6依据本发明一实施例的客户端的结构示意图;
图7为依据本发明另一实施例的客户端的结构示意图;
图8为依据本发明一实施例的信息处理装置的结构示意图;
图9为依据本发明另一实施例的信息处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例的信息处理系统的结构示意图。如图1所示,信息处理系统100包括用户终端200和服务器300。其中,用户终端200中安装有客户端210和操作系统220。客户端210以进程的形式基于操作系统220进行运行。当客户端210的进程211在运行发生过程中发生异常时,操作系统200中的异常处理流程221感知该异常并且寻找已注册的异常处理函数来处理该异常。
根据本发明的实施例,为了能够准确感知、捕获客户端的进程中异常处理的结果,在客户端210中安装有专用的异常处理结果的分析组件212。异常处理结果的分析组件212监测异常处理执行模块2211和异常处理查找模块2212的运行状态,根据二者的运行状态对进程进行异常处理标记,通过该异常处理标记判断进程是否崩溃。其中,异常处理执行模块2211用于调用异常处理函数来对发生的异常执行处理的操作;异常处理查找模块2212则用于扫描所有的执行例程、查找出当前可用的异常处理执行模块。
随后,客户端210将判断后的结果通过崩溃指示消息上传给服务器300。服务器300根据接收到的崩溃指示消息,统计发生崩溃的次数以及崩溃率等。基于这些数据分析,软件开发人员可以对该客户端的异常处理结果有个准确、量化的感知,从而进行后续的软件提升工作。
实际应用中,服务器300可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。用户终端200和服务器300之间可以通过无线网络或有线网络相连。
图2为依据本发明一实施例的信息处理方法的示例性流程图,该方法应用于客户端。如图2所示,该方法可包括如下步骤:
步骤201,当客户端被启动时,创建并运行客户端的进程。
在本申请实施例中,客户端被启动时,通过进程的方式执行客户端的应用程序,即将客户端对应的应用程序代码加载到内存中,操作系统为其分配资源后执行相应的代码,这种执行的程序称之为进程。进程是操作系统进行资源分配和调度的一个独立单位,每个进程都有自己单独的地址空间。也就是说,当客户端运行时,通过进程来展现应用程序在操作系统上顺序执行时的动态活动。
步骤202,监测异常处理执行模块,异常处理执行模块用于处理在进程中发生的至少一个异常。
本步骤中,异常处理执行模块位于客户端所基于的操作系统中。以windows操作系统为例,当进程中发生异常时,windows操作系统感知该异常并且开始分发,寻找已注册的异常处理函数来处理该异常。在现有的windows操作系统异常处理流程中,应用层异常的分发是按照向量化异常处理(VEH)、结构化异常处理(SEH)以及未处理异常过滤器(UnhandledExceptionFilter)的顺序来进行分发的。
需要注意的是,在这种分发逻辑中,存在以下两种问题:
1)有些异常产生时,VEH执行之后,若异常未被解决,该异常会继续分发给SEH进行。但SEH处理异常的结果并不会回传给VEH,因此,VEH无法感知SEH的处理结果。若VEH把SEH可处理的异常认为进程已崩溃,则会导致对异常处理结果的误报。
2)有些异常产生时,SEH未能处理该异常,导致进程崩溃,此时该异常将传递不到未处理异常过滤器,会导致其不能感知和统计异常,从而存在少报的情况。
鉴于此,本申请实施例中,考虑到SEH对每个异常至少有一次处理机会,所有的崩溃都是SEH决定的,因此,本步骤中,监测操作系统中的异常处理执行模块,是指监测SEH处理过程中用于执行处理异常这一操作的例程。
具体应用时,上述异常处理执行模块为windows操作系统中的RtlpExecuteHandlerForException函数。
具体地,在SEH的处理过程中,RtlDispatchException函数负责SEH处理过程的分发。RtlDispatchException函数获取一个指向EXCEPTION_REGISTRATION结构链表的指针,然后遍历当前线程的SEH异常处理链表。对于链表中的每个节点,依次调用RtlpExecuteHandlerForException函数,通过这个RtlpExecuteHandlerForException函数来调用在每个节点注册的异常处理函数。由此可见,针对进程中不断发生的异常,真正负责执行处理这个异常的是RtlpExecuteHandlerForException函数。
具体的监测方式可以为,调用钩子(hook)函数监测客户端所基于的操作系统调用异常处理执行模块的消息。本申请实施例中,钩子作为一个处理消息的程序段,通过调用该钩子函数,可以在特定的消息发出、在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这样,在SEH处理过程中RtlpExecuteHandlerForException函数被调用时,钩子函数可以捕获到这个函数被调用的消息,从而达到监测的目的。
步骤203,根据监测到的异常处理执行模块的运行状态,针对进程设置异常处理标记。
对现有的windows操作系统的异常处理流程进行逆向分析,可以得到如下几个结论:
1)当异常处理流程进入RtlpExecuteHandlerForException函数时,表明SEH处理过程正在被调用。
2)当RtlpExecuteHandlerForException函数返回时,表明一个SEH处理过程被调用结束。
例如,若返回ExceptionContinueExecution,RtlDispatchException函数结束遍历;若返回ExceptionContinueSearch,RtlDispatchException函数继续遍历下一个结点;若返回ExceptionNestedException,RtlDispatchException函数则从指定的新异常继续遍历。
3)当进入RtlpExecuteHandlerForException函数且此函数不返回,表明调用SEH的过程出现新的未知问题,应用程序已经无法执行,即将崩溃退出。
因此,监测异常处理执行模块的运行状态,是指监测:异常处理执行模块正在运行还是已返回。然后,对这两种运行状态设置异常处理标记,并赋予不同的值加以区分。
具体地,当监测到异常处理执行模块正在运行时,设置一个异常处理标记,并为异常处理标记赋上第一数值。例如,监测到代码执行进入到RtlpExecuteHandlerForException函数,设置异常处理标记为1。
当监测到异常处理执行模块时已返回,为异常处理标记赋上第二数值。例如,当监测到RtlpExecuteHandlerForException函数已返回时,无论具体的返回值如何,设置异常处理标记为0。
这里,第一数值和第二数值也可以为其他预先设定的数值,或者是符号等形式,只要二者不同即可。或者,第二数值为空,相当于取消异常处理标记。
步骤204,根据异常处理标记判断进程是否崩溃。
在进程的退出函数中对异常处理标记的值进行判断。根据步骤203中的设置方式,当判断出异常处理标记为第一数值时,确定进程已崩溃。当判断出异常处理标记为第二数值时,确定进程未崩溃。
根据本实施例,当客户端被启动时,创建并运行客户端的进程;监测异常处理执行模块,异常处理执行模块用于处理在进程中发生的至少一个异常;根据监测到的异常处理执行模块的运行状态,针对进程设置异常处理标记;根据异常处理标记判断进程是否崩溃,可以在不获知客户端代码的前提下,通过接管操作系统的部分功能(即异常处理执行模块),不破坏原有的异常处理机制,准确的判断出异常处理流程(尤其是SEH链)对异常处理的最终结果,有效的监控客户端的运营质量,避免事故和突发事件,提高了用户终端运行的稳定性;并且这种方法通用性强,可以应用于任何一种客户端。
例如,客户端为互动娱乐游戏,大量的用户终端和服务器相连,通过图2所示的实施例,可以有效、准确的监控游戏客户端外网的运营质量,为游戏运营的稳定性提供保障。
图3为依据本发明另一实施例的信息处理方法的示例性流程图,该方法应用于客户端。如图3所示,在图2所示的步骤201-203基础之上:
步骤201,当客户端被启动时,创建并运行客户端的进程。
步骤202,监测异常处理执行模块,异常处理执行模块用于处理在进程中发生的至少一个异常。
步骤203,根据监测到的异常处理执行模块的运行状态,针对进程设置异常处理标记。
该方法还包括如下步骤:
步骤301,监测异常处理查找模块,异常处理查找模块用于查找当前可用的异常处理执行模块。
本步骤中,异常处理查找模块位于操作系统中。在一实施例中,异常处理查找模块为window操作系统中的RtlpExecuteHandlerForUnwind函数。
具体地,考虑到在SEH处理过程中,当SEH链表需要进行展开时,会调用RtlpExecuteHandlerForUnwind函数,此时表明即将进行SEH展开,查找和调用上层的SEH处理过程,即确定新的异常处理执行模块来处理当前的异常。因此,当执行到RtlpExecuteHandlerForUnwind函数时,可以认为SEH处理过程正在分发和处理,进程中的异常将被继续处理。
步骤301和步骤202中的监测操作是同步进行的,即同时监测这两个例程。例如,使用钩子函数监测是否有操作系统分别调用异常处理执行模块和异常处理查找模块的消息。
需要指出的是,调用异常处理执行模块和异常处理查找模块的先后顺序是可变的。一种情况是,首先监测到异常处理执行模块正在运行、继而返回,然后监测到异常处理查找模块正在运行。此时可以认为,子函数(之前的异常处理执行模块)无法处理当前的异常,通过展开SEH层级结构、查找到这个子函数的父函数(当前可用的异常处理执行模块)来继续处理该异常。
另一种情况是,首先监测到异常处理查找模块正在运行,查找到了当前一个可用的异常处理执行模块,然后监测到了这个可用的异常处理执行模块正在运行,进而返回或者不返回。
步骤302,根据监测到的异常处理查找模块的运行状态,设置异常处理标记。
本步骤中,监测异常处理查找模块的运行状态,是指监测异常处理查找模块是否正在运行。具体而言,根据windows操作系统的异常处理机制,在SEH链表的最顶层(即最后一个节点)设置一个系统默认的异常处理执行模块,这个例程将会作为最终备用的可用执行例程,它总是会选择处理异常。也就是说,异常处理查找模块总是能够正确返回。因此,监测异常处理查找模块的运行状态,只需监测该例程是否正在运行。
当监测到异常处理查找模块正在运行时,为异常处理标记赋上第三数值。这里,第三数值可以和第二数值相同,表明此时进程不会发生崩溃。例如,第三数值为0。或者,第三数值也可以和第一数值、第二数值都不相同。例如,第三数值为2。
步骤303,根据异常处理标记判断进程是否崩溃。
通过上述步骤,异常处理标记可能被赋值为第一数值、第二数值或者第三数值,在判断是否崩溃时,是以第一数值为准,即当判断出异常处理标记为第一数值时,确定进程已崩溃。当判断出异常处理标记为第二数值或者第三数值时,确定进程未崩溃。由此可见,第一数值的功能是用于标记进程崩溃;而第二数值、第三数值是用于标记进程未崩溃。
在上述实施例中,通过监测异常处理查找模块,根据监测到的异常处理查找模块的运行状态,设置异常处理标记,目的是考虑这样一种场景:当用户主动终止应用程序、但是当前异常可以被处理的情况,进程实际未崩溃,通过监测异常处理查找模块进行设置异常处理标记,可以理解为一种防御标记,从而减少误报的情况。
图4为依据本发明又一实施例的信息处理方法的示例性流程图,该方法应用于客户端。如图4所示,在图2所示的步骤201-204基础之上,该方法还包括如下步骤:
步骤401,当判断出进程已崩溃时,向服务器发送崩溃指示消息,以使服务器根据预定时间段内接收到的多个崩溃指示消息统计客户端的崩溃率。
本申请实施例中,崩溃指示消息可以携带有客户端的名称、客户端的版本号、进程发生崩溃时异常所在的位置、登录客户端的用户账号中的一项或多项。其中,进程发生崩溃时异常所在的位置可以为绝对值或者相对值(例如,相对于进程的头部)。这样,服务器可以接收到多个客户端、每个客户端在预定时间段内发送的多个崩溃指示消息,将这些数据进行统计、对比分析,利于软件开发人员进一步提升软件质量。
实际应用时,生成崩溃指示消息可以按照崩溃转储文件(dump)的方式。具体而言,dump文件是进程的内存镜像,可以把程序运行时的状态完整的保存下来。在进程崩溃的时候创建dump文件,可以使用DbgHelp.dll中Windows API的MiniDumpWriteDump()函数。
表1为本发明一实施例中崩溃的详情统计数据。其中,包括客户端名称、客户端版本号、崩溃偏移量、Dump类型、一天之内的崩溃次数。其中,崩溃偏移量用于指示进程发生崩溃时异常所在的位置相对于进程头部产生的偏移量;dump类型包括应用层和内核层,表1中的ring3层表征的是应用层dump。例如,序号为1的客户端名称为游戏联盟,版本号为7.19.203.949,崩溃偏移量为0x29 c915,dump类型为ring3层,崩溃次数/天为21941次。
序号 客户端名称 客户端版本号 崩溃偏移量 Dump类型 崩溃次数/天
1 游戏联盟.exe 7.19.203.949 0x29 c915 ring3层 21941
2 我的世界.exe 7.19.203.949 0x8728a0 ring3层 15396
3 纵横天下.dll 9.24.1400.0 0x2cdfa ring3层 8246
4 ABC.exe 7.19.203.949 0x18f9a9 ring3层 10330
5 叽里呱啦.exe 7.19.203.949 0x38dde2 ring3层 7660
表1崩溃详情统计
当崩溃指示消息中携带有登录客户端的用户账号时,例如,QQ号,将该QQ号记录为崩溃用户标识。若统计出该用户账号发生的崩溃次数非常高,用户使用客户端的体验非常差,则服务器可以向该用户所登录的客户端发送避免异常的操作提示消息,以帮助用户通过正常使用软件来减少异常发生的次数。
若服务器接收到的崩溃指示消息为dump文件,可以使用dump文件对异常进行定位和修复。具体做法是,将dump文件拷贝到含有应用程序和对应的pdb文件的目录,打开dump文件,此时会自动创建一个solution,对其直接调试运行,代码就会停到使进程崩溃的那一行上,从而可以定位异常、调试代码以修复错误。
图5为依据本发明一实施例的崩溃统计数据的示意图。如图5所示,横轴为时间(天),柱状图显示的是崩溃次数,曲线显示的崩溃率。其中,崩溃率的计算方式为崩溃次数/使用客户端的总人数。在由三角Δ所示的时间点之前,是未使用本申请实施例中所示方法的崩溃次数和崩溃率,在三角Δ所示的时间点之后,是使用了本申请实施例中所示方法。通过前后的比较,可以明显的看到捕捉到的崩溃数据大大提升,崩溃次数和崩溃率的数值都大大增加。可见,本申请实施例可以有效的捕捉到发生异常后产生的崩溃。
图6为依据本发明一实施例的客户端的结构示意图。如图6所示,客户端600包括:
进程运行模块610,用于当客户端被启动时,创建并运行客户端的进程;
监测模块620,用于监测异常处理执行模块,异常处理执行模块用于处理在进程运行模块610中运行的进程中发生的至少一个异常;
设置模块630,用于根据监测模块620监测到的异常处理执行模块的运行状态,针对进程设置异常处理标记;及,
判断模块640,用于根据设置模块630设置的异常处理标记判断进程是否崩溃。
在一实施例中,监测模块620用于,调用钩子函数监测客户端所基于的操作系统调用异常处理执行模块的消息。
在一实施例中,设置模块630用于,当监测到异常处理执行模块正在运行时,为异常处理标记赋上第一数值;
判断模块640用于,当判断出异常处理标记为第一数值时,确定进程已崩溃。
在一实施例中,设置模块630用于,当监测到异常处理执行模块已返回时,为异常处理标记赋上第二数值;
判断模块640用于,当判断出异常处理标记为第二数值时,确定进程未崩溃。
在一实施例中,监测模块620进一步用于,监测异常处理查找模块,异常处理查找模块用于查找当前可用的异常处理执行模块;
设置模块630进一步用于,根据监测到的异常处理查找模块的运行状态,设置异常处理标记。
在一实施例中,设置模块630用于,当监测到异常处理查找模块正在运行时,为异常处理标记赋上第三数值;
判断模块640用于,当异常处理标记为第三数值时,确定进程未崩溃。
在一实施例中,客户端600还包括:
发生模块650,用于当判断模块640判断出进程已崩溃时,向服务器发送崩溃指示消息,以使服务器根据预定时间段内接收到的多个崩溃指示消息统计客户端的崩溃率。
图7为依据本发明另一实施例的客户端的结构示意图。该客户端700可包括:处理器710、存储器720、端口730以及总线740。处理器710和存储器720通过总线740互联。处理器710可通过端口730接收和发送数据。其中,
处理器710用于执行存储器720存储的机器可读指令模块。
存储器720存储有处理器710可执行的机器可读指令模块。处理器710可执行的指令模块包括:进程运行模块721、监测模块722、设置模块723和判断模块724。其中,
进程运行模块721被处理器710执行时可以为:当客户端被启动时,创建并运行客户端的进程;
监测模块722被处理器710执行时可以为:监测异常处理执行模块,异常处理执行模块用于处理在进程运行模块721中运行的进程中发生的至少一个异常;
设置模块723被处理器710执行时可以为:根据监测模块722监测到的异常处理执行模块的运行状态,针对进程设置异常处理标记;
判断模块724被处理器710执行时可以为:根据设置模块723设置的异常处理标记判断进程是否崩溃。
在一实施例中,处理器710可执行的指令模块还包括:发送模块725,用于当判断模块724判断出进程已崩溃时,向服务器发送崩溃指示消息,以使服务器根据预定时间段内接收到的多个崩溃指示消息统计客户端的崩溃率。
由此可以看出,当存储在存储器720中的指令模块被处理器710执行时,可实现前述各个实施例中进程运行模块、监测模块、设置模块、判断模块和发送模块的各种功能。
图8为依据本发明一实施例的信息处理装置的结构示意图。如图8所示,装置800位于客户端内,当客户端被启动时,创建并运行客户端的进程,装置800包括:
监测模块810,用于监测异常处理执行模块,异常处理执行模块用于处理在进程中发生的至少一个异常;
设置模块820,用于根据监测模块810监测到的异常处理执行模块的运行状态,针对进程设置异常处理标记;及,
判断模块830,用于根据设置模块820设置的异常处理标记判断进程是否崩溃。
在一实施例中,设置模块820用于,当监测到异常处理执行模块正在运行时,为异常处理标记赋上第一数值;
判断模块830用于,当判断出异常处理标记为第一数值时,确定进程已崩溃。
在一实施例中,监测模块810进一步用于,监测异常处理查找模块,异常处理查找模块用于查找当前可用的异常处理执行模块;
设置模块820进一步用于,根据监测到的异常处理查找模块的运行状态,设置异常处理标记。
在一实施例中,装置800还包括:
发送模块840,用于当判断模块830判断出进程已崩溃时,向服务器发送崩溃指示消息,以使服务器根据预定时间段内接收到的多个崩溃指示消息统计客户端的崩溃率。
图9为依据本发明一实施例的信息处理装置的结构示意图。如图9所示,装置900可包括:处理器910、存储器920、端口930以及总线940。处理器910和存储器920通过总线940互联。处理器910可通过端口930接收和发送数据。其中,
处理器910用于执行存储器920存储的机器可读指令模块。
存储器920存储有处理器910可执行的机器可读指令模块。处理器910可执行的指令模块包括:监测模块921、设置模块922和判断模块923。其中,当客户端被启动时,创建并运行客户端的进程;
监测模块921被处理器910执行时可以为:监测异常处理执行模块,异常处理执行模块用于处理在进程中发生的至少一个异常;
设置模块922被处理器910执行时可以为:根据监测模块921监测到的异常处理执行模块的运行状态,针对进程设置异常处理标记;
判断模块923被处理器910执行时可以为:根据设置模块922设置的异常处理标记判断进程是否崩溃。
在一实施例中,处理器910可执行的指令模块还包括:发送模块924,用于当判断模块923判断出进程已崩溃时,向服务器发送崩溃指示消息,以使服务器根据预定时间段内接收到的多个崩溃指示消息统计客户端的崩溃率。
由此可以看出,当存储在存储器920中的指令模块被处理器910执行时,可实现前述各个实施例中监测模块、设置模块、判断模块和发送模块的各种功能。
上述装置和系统实施例中,各个模块及单元实现自身功能的具体方法在方法实施例中均有描述,这里不再赘述。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
另外,本发明的每一个实施例可以通过由数据处理设备如计算机执行的数据处理程序来实现。显然,数据处理程序构成了本发明。此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和或内存)中执行。因此,这样的存储介质也构成了本发明。存储介质可以使用任何类型的记录方式,例如纸张存储介质(如纸带等)、磁存储介质(如软盘、硬盘、闪存等)、光存储介质(如CD-ROM等)、磁光存储介质(如MO等)等。
因此,本发明还公开了一种存储介质,其中存储有数据处理程序,该数据处理程序用于执行本发明上述方法的任何一种实施例。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (15)

1.一种信息处理方法,其特征在于,应用于客户端,所述方法包括:
当所述客户端被启动时,创建并运行所述客户端的进程;
监测异常处理执行模块,所述异常处理执行模块用于处理在所述进程中发生的至少一个异常;
根据监测到的所述异常处理执行模块的运行状态,针对所述进程设置异常处理标记;及,
根据所述异常处理标记判断所述进程是否崩溃。
2.根据权利要求1所述的方法,其中,所述监测异常处理执行模块,包括:
调用钩子函数监测所述客户端所基于的操作系统调用所述异常处理执行模块的消息。
3.根据权利要求1所述的方法,其中,所述根据监测到的所述异常处理执行模块的运行状态,针对所述进程设置异常处理标记包括:
当监测到所述异常处理执行模块正在运行时,为所述异常处理标记赋上第一数值;
所述根据所述异常处理标记判断所述进程是否崩溃包括:
当判断出所述异常处理标记为所述第一数值时,确定所述进程已崩溃。
4.根据权利要求1所述的方法,其中,所述根据监测到的所述异常处理执行模块的运行状态,针对所述进程设置异常处理标记包括:
当监测到所述异常处理执行模块已返回时,为所述异常处理标记赋上第二数值;
所述根据所述异常处理标记判断所述进程是否崩溃包括:
当判断出所述异常处理标记为所述第二数值时,确定所述进程未崩溃。
5.根据权利要求1至4中任一项所述的方法,其中,所述异常处理执行模块为windows操作系统中的RtlpExecuteHandlerForException函数。
6.根据权利要求1所述的方法,还包括:
监测异常处理查找模块,所述异常处理查找模块用于查找当前可用的异常处理执行模块;
根据监测到的所述异常处理查找模块的运行状态,设置所述异常处理标记。
7.根据权利要求6所述的方法,其中,所述根据监测到的所述异常处理查找模块的运行状态,设置所述异常处理标记包括:
当监测到所述异常处理查找模块正在运行时,为所述异常处理标记赋上第三数值;
所述根据所述异常处理标记判断所述进程是否崩溃包括:
当所述异常处理标记为所述第三数值时,确定所述进程未崩溃。
8.根据权利要求6至7中任一项所述的方法,其中,所述异常处理查找模块为window操作系统中的RtlpExecuteHandlerForUnwind函数。
9.根据权利要求1所述的方法,还包括:
当判断出所述进程已崩溃时,向服务器发送崩溃指示消息,以使所述服务器根据预定时间段内接收到的多个崩溃指示消息统计所述客户端的崩溃率。
10.根据权利要求9所述的方法,其中,所述崩溃指示消息携带有所述客户端的名称、所述客户端的版本号、所述进程发生崩溃时异常所在的位置、登录所述客户端的用户账号中的一项或多项。
11.一种信息处理装置,其特征在于,所述装置位于客户端内,当所述客户端被启动时,创建并运行所述客户端的进程,所述装置包括:
监测模块,用于监测异常处理执行模块,所述异常处理执行模块用于处理在所述进程中发生的至少一个异常;
设置模块,用于根据所述监测模块监测到的所述异常处理执行模块的运行状态,针对所述进程设置异常处理标记;及,
判断模块,用于根据所述设置模块设置的异常处理标记判断所述进程是否崩溃。
12.根据权利要求11所述的装置,其中,
所述设置模块用于,当监测到所述异常处理执行模块正在运行时,为所述异常处理标记赋上第一数值;
所述判断模块用于,当判断出所述异常处理标记为所述第一数值时,确定所述进程已崩溃。
13.根据权利要求11所述的装置,其中,
所述监测模块进一步用于,监测异常处理查找模块,所述异常处理查找模块用于查找当前可用的异常处理执行模块;
所述设置模块进一步用于,根据监测到的所述异常处理查找模块的运行状态,设置所述异常处理标记。
14.根据权利要求11至13中任一项所述的装置,还包括:
发送模块,用于当所述判断模块判断出所述进程已崩溃时,向服务器发送崩溃指示消息,以使所述服务器根据预定时间段内接收到的多个崩溃指示消息统计所述客户端的崩溃率。
15.一种计算机可读存储介质,其特征在于,存储有计算机可读指令,可以使至少一个处理器执行如权利要求1至10中任一项所述的方法。
CN201810168610.0A 2018-02-28 2018-02-28 一种信息处理方法及装置 Active CN108287769B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810168610.0A CN108287769B (zh) 2018-02-28 2018-02-28 一种信息处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810168610.0A CN108287769B (zh) 2018-02-28 2018-02-28 一种信息处理方法及装置

Publications (2)

Publication Number Publication Date
CN108287769A true CN108287769A (zh) 2018-07-17
CN108287769B CN108287769B (zh) 2021-07-02

Family

ID=62833310

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810168610.0A Active CN108287769B (zh) 2018-02-28 2018-02-28 一种信息处理方法及装置

Country Status (1)

Country Link
CN (1) CN108287769B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109358975A (zh) * 2018-09-28 2019-02-19 珠海市君天电子科技有限公司 一种软件运行异常的分析方法、装置、电子设备及存储介质
CN109669795A (zh) * 2018-12-14 2019-04-23 麒麟合盛网络技术股份有限公司 崩溃信息处理方法及装置
CN110287051A (zh) * 2019-06-21 2019-09-27 四川盛趣时代网络科技有限公司 基于windows异常处理机制的主动防护方法
CN110908837A (zh) * 2019-11-15 2020-03-24 珠海豹趣科技有限公司 应用程序异常处理方法、装置、电子设备及存储介质
CN112437152A (zh) * 2020-11-20 2021-03-02 北京百度网讯科技有限公司 崩溃处理方法、装置、电子设备和存储介质
CN114756400A (zh) * 2022-06-15 2022-07-15 四川新网银行股份有限公司 一种基于安卓系统的应用程序异常处理方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100107017A1 (en) * 2008-10-23 2010-04-29 Dell Products L.P. Method to Isolate Crash of an Embedded Multi-Threaded Application to a Shared Library Call Without Core Dump Files or Debugger
CN103116714A (zh) * 2013-03-01 2013-05-22 中标软件有限公司 一种Windows平台可执行文件双进程保护方法
CN106708643A (zh) * 2016-11-14 2017-05-24 武汉斗鱼网络科技有限公司 异常信息处理方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100107017A1 (en) * 2008-10-23 2010-04-29 Dell Products L.P. Method to Isolate Crash of an Embedded Multi-Threaded Application to a Shared Library Call Without Core Dump Files or Debugger
CN103116714A (zh) * 2013-03-01 2013-05-22 中标软件有限公司 一种Windows平台可执行文件双进程保护方法
CN106708643A (zh) * 2016-11-14 2017-05-24 武汉斗鱼网络科技有限公司 异常信息处理方法及装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109358975A (zh) * 2018-09-28 2019-02-19 珠海市君天电子科技有限公司 一种软件运行异常的分析方法、装置、电子设备及存储介质
CN109669795A (zh) * 2018-12-14 2019-04-23 麒麟合盛网络技术股份有限公司 崩溃信息处理方法及装置
CN109669795B (zh) * 2018-12-14 2022-02-22 麒麟合盛网络技术股份有限公司 崩溃信息处理方法及装置
CN110287051A (zh) * 2019-06-21 2019-09-27 四川盛趣时代网络科技有限公司 基于windows异常处理机制的主动防护方法
CN110908837A (zh) * 2019-11-15 2020-03-24 珠海豹趣科技有限公司 应用程序异常处理方法、装置、电子设备及存储介质
CN110908837B (zh) * 2019-11-15 2024-03-01 珠海豹趣科技有限公司 应用程序异常处理方法、装置、电子设备及存储介质
CN112437152A (zh) * 2020-11-20 2021-03-02 北京百度网讯科技有限公司 崩溃处理方法、装置、电子设备和存储介质
CN114756400A (zh) * 2022-06-15 2022-07-15 四川新网银行股份有限公司 一种基于安卓系统的应用程序异常处理方法及系统
CN114756400B (zh) * 2022-06-15 2022-08-26 四川新网银行股份有限公司 一种基于安卓系统的应用程序异常处理方法及系统

Also Published As

Publication number Publication date
CN108287769B (zh) 2021-07-02

Similar Documents

Publication Publication Date Title
CN108287769A (zh) 一种信息处理方法及装置
JP5684946B2 (ja) イベントの根本原因の解析を支援する方法及びシステム
US9389943B2 (en) Determining a number of unique incidents in a plurality of incidents for incident processing in a distributed processing system
CN108268372B (zh) Mock测试处理方法、装置、存储介质和计算机设备
EP2674865A1 (en) MANAGEMENT COMPUTER AND METHOD FOR ROOT CAUSE ANALYSiS
JP2017201470A (ja) 設定支援プログラム、設定支援方法及び設定支援装置
CN107153573A (zh) 分布式任务处理方法和装置
CN110275992B (zh) 应急处理方法、装置、服务器及计算机可读存储介质
CN112636942B (zh) 业务主机节点的监测方法及装置
CN106506490A (zh) 一种分布式计算控制方法以及分布式计算系统
US9892028B1 (en) System and method for debugging of webcasting applications during live events
CN107453932A (zh) 一种分布式存储系统管理方法及其装置
JP2011197785A (ja) ログ収集システムおよびログ収集プログラム
CN111181800A (zh) 测试数据处理方法、装置、电子设备及存储介质
CN108073499A (zh) 应用程序的测试方法及装置
US7882399B2 (en) Intelligent job functionality
US20120233245A1 (en) Voip communication system and method for registering client devices with same
CN104750553B (zh) 应用运行方法和装置
US10922125B2 (en) Capability liveness of containerized services
JP2008005118A (ja) ネットワーク監視システム
CN115883138A (zh) 一种机载娱乐系统运行状态巡检方法、装置、设备及介质
US20230318908A1 (en) Method for Handling Large-Scale Host Failures on Cloud Platform
CN111143177B (zh) Ibm主机的rmf iii数据的收集方法、系统、装置及存储介质
CN104754328B (zh) 一种分布式视频质量诊断方法
CN109445877B (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
GR01 Patent grant
GR01 Patent grant