CN108459952B - 程序异常的处理方法及系统 - Google Patents

程序异常的处理方法及系统 Download PDF

Info

Publication number
CN108459952B
CN108459952B CN201710094301.9A CN201710094301A CN108459952B CN 108459952 B CN108459952 B CN 108459952B CN 201710094301 A CN201710094301 A CN 201710094301A CN 108459952 B CN108459952 B CN 108459952B
Authority
CN
China
Prior art keywords
information
scene
program
user
queue
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.)
Active
Application number
CN201710094301.9A
Other languages
English (en)
Other versions
CN108459952A (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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201710094301.9A priority Critical patent/CN108459952B/zh
Publication of CN108459952A publication Critical patent/CN108459952A/zh
Application granted granted Critical
Publication of CN108459952B publication Critical patent/CN108459952B/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/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明的实施方式提供了一种程序异常的处理方法。该方法包括:启动程序之后,在程序运行客户端存储来自程序的操作信息;将所述客户端存储的操作信息上报给服务器;进行程序异常分析时,从所述服务器获取所述操作信息,通过解析所述操作信息,解读用户及程序的操作路径,从而还原程序异常前的操作场景。通过存储并解析操作信息,本发明的方法使得可以还原程序异常的操作场景,从而显著地提高了异常处理的准确性。此外,本发明的实施方式提供了一种程序异常的处理系统。

Description

程序异常的处理方法及系统
技术领域
本发明的实施方式涉及计算机软件领域,更具体地,本发明的实施方式涉及程序异常的处理方法及系统。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在现有计算机软件程序运行过程中,针对程序异常的反馈方式是,将异常线程的调用栈通过网络传输给服务器。服务器解析信息,将其翻译为程序的函数调用关系。
然而,现有程序异常处理方案中依据的信息非常有限,导致异常分析和定位不准确。例如,现有方案中一般仅能解析出开发代码的异常位置,对于系统代码、依赖库代码、时常不能解析出异常位置。在不能解析出异常位置的情况下,只能返回不可读的符号内存地址。在这在情况下,技术人员无法还原问题场景,不利于问题的分析和解决。再如,现有方案中仅能定位出异常发生的代码位置,至于代码被调用的情况,则不能保障被准确反馈。
发明内容
但是,出于异常处理信息有限的原因,现有技术不能准确定位异常原因。
因此在现有技术中,不能保证程序异常处理的精度,这是非常令人烦恼的过程。
为此,非常需要一种改进的程序异常的处理方法及系统,以使准确的定位出异常原因。
在本上下文中,本发明的实施方式期望提供一种程序异常的处理方法及系统。
在本发明实施方式的第一方面中,提供了一种程序异常的处理方法,包括:启动程序之后,在程序运行客户端存储来自程序的操作信息;将所述客户端存储的操作信息上报给服务器;进行程序异常分析时,从所述服务器获取所述操作信息,通过解析所述操作信息,解读用户及程序的操作路径,从而还原程序异常前的操作场景。
在本发明的一个实施例中,该方法还包括:在所述客户端设置操作信息队列,利用所述操作信息队列存储所述操作信息;所述操作信息按照加入的顺序,依次有序存储到所述操作信息队列中。
在本发明的另一实施例中,该方法包括:为所述操作信息队列设置长度阈值;当所述操作信息队列中存储的操作信息达到所述长度阈值时,按照存储时间顺序,将存储时间最早的操作信息进行丢弃。
在本发明的又一个实施例中,该方法包括:所述操作信息包括用户操作埋点信息,屏幕埋点信息,技术设计相关信息,WEB页面的URL跳转信息,和/或,用户在WEB页面中操作事件信息。
在本发明的再一个实施例中,该方法包括:在所述客户端设置场景信息队列,利用所述场景信息队列存储场景信息;所述场景信息按照加入的顺序,依次有序存储到所述场景信息队列中;将所述场景信息上报给服务器。
在本发明的再一个实施例中,该方法还包括:为所述场景信息队列设置长度阈值;当所述场景信息队列中存储的场景信息达到所述长度阈值时,按照存储时间顺序,将存储时间最早的场景信息进行丢弃。
在本发明的再一个实施例中,该方法还包括:所述进行程序异常分析时,所述方法还包括:从所述服务器获取所述场景信息;解析所述场景信息,获知用户所处客户端页面的位置信息,用户所处业务的业务信息,和/或用户所处WEB页面的位置信息。
在本发明的再一个实施例中,所述场景信息包括用户操作所处客户端页面的位置信息、用户所处业务的业务信息、和/或用户所处WEB页面的位置信息。
在本发明的再一个实施例中,所述WEB页面的URL跳转信息包括锚点跳转信息。
在本发明的再一个实施例中,所述用户所处WEB页面的位置信息包括用户所处WEB页面的页面中子位置信息。
在本发明实施方式的第二方面中,提供了一种程序异常的处理系统,包括:程序运行客户端,用于在启动程序之后,存储来自程序的操作信息;以及,将所存储的操作信息上报给服务器;服务器,用于接收所述操作信息;异常分析客户端,用于进行程序异常分析,包括从所述服务器获取所述操作信息,通过解析所述操作信息,解读用户及程序的操作路径,从而还原程序异常前的操作场景。
在本发明的一个实施例中,所述程序运行客户端还用于:设置操作信息队列,利用所述操作信息队列存储所述操作信息;其中,所述操作信息按照加入的顺序,依次有序存储到所述操作信息队列中。
在本发明的一个实施例中,所述程序运行客户端还用于:为所述操作信息队列设置长度阈值;当所述操作信息队列中存储的操作信息达到所述长度阈值时,按照存储时间顺序,将存储时间最早的操作信息进行丢弃。
在本发明的一个实施例中,所述操作信息包括用户操作埋点信息,屏幕埋点信息,技术设计相关信息,WEB页面的URL跳转信息,和/或,用户在WEB页面中操作事件信息。
在本发明的一个实施例中,所述程序运行客户端还用于:设置场景信息队列,利用所述场景信息队列存储场景信息;其中,所述场景信息按照加入的顺序,依次有序存储到所述场景信息队列中;将所述场景信息队列发送给服务器。
在本发明的一个实施例中,为所述场景信息队列设置长度阈值;当所述场景信息队列中存储的场景信息达到所述长度阈值时,按照存储时间顺序,将存储时间最早的场景信息进行丢弃。
在本发明的一个实施例中,所述异常分析客户端还用于:获取并解析所述场景信息,获知用户所处页面的位置信息和/或用户所处业务的场景信息。
在本发明的一个实施例中,所述场景信息包括用户操作所处页面的位置信息、用户所处业务的业务信息和/或用户所处WEB页面的位置信息。
在本发明的一个实施例中,所述WEB页面的URL跳转信息包括锚点跳转信息。
在本发明的一个实施例中,所述用户所处WEB页面的位置信息包括用户所处WEB页面的页面中子位置信息。
本发明实施例提供的方案相对于现有的技术方案,至少存在如下技术效果:
1、现有的技术方案,对于异常调用栈没有定位到开发人员代码的情况,是难以分析、定位问题的。本发明方案,从还原用户操作场景的角度出发,有效的帮助技术人员定位问题所在,回避了现有技术方案依赖异常调用栈所导致的局限性。
2、现有的技术方案,不能还原用户的操作场景,技术人员只能依靠有限数据,猜测用户触发异常的操作场景,只有模拟出可复现的异常场景,才能有效的定位、解决异常问题,如果不能复现异常场景,解决方案可能是无效的。本发明方案,能够精准提供用户触发异常的操作场景,减少猜测,提高了分析、定位问题的效率。
3、本发明方案,利用程序原有埋点信息,提升场景还原效果,避免额外的开发成本。埋点信息本身就是产品设置的、还原用户操作的信息。它作为需求,在开发时就已经写入了程序。程序员利用埋点信息还原用户操作场景,无需做过多额外工作,就可以获得详尽的信息。此外,埋点信息的设计本身就考虑到隐私、安全性等问题。因此,利用埋点信息还原异常场景也是比较合适的解决方案。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了根据本发明实施方式的程序异常处理系统架构示意图;
图2示意性地示出了根据本发明一实施例的程序异常处理方法流程图;
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种程序异常的处理方法及系统。
在本文中,需要理解的是,对所涉及的术语解释如下:调用栈(Call stack)表示调用堆栈,调用堆栈时一个方法列表,按照调用顺序保存所有在运行期限被调用的方法。埋点,也称为埋点分析,是APP分析、网站分析的一种常用的数据采集方法,埋点是在产品转化关键点、服务转化关键点植入的统计代码,追踪用户在平台每个界面上的系列行为。此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
如前所述的,现有方案中仅能定位出异常发生的代码位置,至于代码被调用的情况,则不能保障被准确反馈。本发明人发现,能否准确定位代码被调用情况,依赖于代码逻辑结构。比如在A页面通过B操作执行一段代码,如果发生异常,则A页面和B操作可能通过异常调用栈信息反馈给技术人员。此时假设A页面通过B操作发起另一个线程执行一段代码,如果发生异常,则A页面和B操作无法通过异常调用栈信息进行反馈。如果发生异常的代码被多个场景调用,仅某些场景下会发生异常,现有技术解析这些问题难度较大。
对此,本发明方案中,在程序运行之后即记录存储程序的操作信息,并在异常发生之后将记录的操作信息提供给服务器,开发人员在分析异常时,可以从服务器获取到操作信息,从而通过解析操作信息,解读出用户及程序的操作路径,最终还原异常前的操作场景。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1,为本发明方案的一种示例性应用场景。在图1中,包括程序运行客户端101、服务器102和异常分析客户端103。其中,程序运行客户端101用于在启动程序之后,存储来自程序的操作信息;以及,将所存储的操作信息上报给服务器102;服务器102,用于接收操作信息;异常分析客户端103,用于进行程序异常分析,包括从服务器102获取操作信息,通过解析操作信息,解读用户及程序的操作路径,从而还原程序异常前的操作场景。
本发明方案基于上述图1的架构,在APP分析或网站分析中,可以进行准确、全面的程序异常分析处理。因为不同于现有技术中仅能定位开发代码的异常位置、而不能反映程序中代码被调用情况,本发明通过记录、上传并分析程序的操作信息,可以解读出用户及程序的操作路径,从而还原异常前的操作场景,其中,操作信息包括用户操作埋点信息,屏幕埋点信息,技术设计相关信息,WEB页面的URL跳转信息(包含锚点跳转),和/或,用户在WEB页面中操作事件信息,等等。其中埋点是在产品转化关键点、服务转化关键点植入的统计代码,追踪用户在平台每个界面上的系列行为。可见,通过分析操作信息不但可以定位出各种情况下的异常位置,还可以分析出代码被调用关系,从而最为全面的展示异常出现时的程序操作场景。
特别说明的是,虽然图1中分别示出了程序运行客户端101和异常分析客户端103,但是本领域技术人员可以理解,程序运行客户端101和异常分析客户端103可以位于一个物理设备上。一般而言,异常分析客户端103是技术人员进行程序异常分析所在的客户端,那么,在程序开发、测试及升级过程中,程序运行客户端101和异常分析客户端103都有可能是位于同一个物理设备上。
示例性方法
下面结合图1的应用场景,参考图2来描述根据本发明示例性实施方式的用于APP(网站)分析的程序异常的处理方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
图2所示的程序异常的处理方法可包括如下流程,其中步骤S201、S203、S204是必须执行的步骤,步骤S202、S205是可选步骤,分别在图中以实线框和虚线框表示。
S201:启动程序之后,在程序运行客户端存储来自程序的操作信息。
具体的,可以通过在程序运行客户端设置一个操作信息队列来存储操作信息,操作信息按照加入的顺序,依次有序存储到操作信息队列中。例如,提供一个长度有限的操作信息队列。当程序启动之后,用于存储来自程序的操作信息。操作信息按照加入的顺序,依次有序的存储到操作信息队列。操作信息包含且不限于用户操作埋点信息、屏幕埋点信息、技术设计相关信息、WEB页面的URL跳转信息、用户在WEB页面中操作事件信息,等等。
其中,埋点是一种常用的数据采集方法,是在产品转化关键点、服务转化关键点植入统计代码,追踪用户在平台每个界面上的系列行为。可以理解,用户操作埋点信息一般是跟踪用户操作的埋点信息,例如,用户基于页面进行相关按钮点击等操作的信息。屏幕埋点信息一般是指反映页面调用关系或页面展示顺序的信息。技术设计相关信息是指技术人员设计的且可以传递到服务器的相关信息,比如用于观察接口连接成功率或观察接口调用关系的信息。WEB页面的URL跳转信息包括不同页面的URL之间的跳转信息,也可以包括锚点跳转信息,对于URL,锚点有后缀,例如,无锚点的URL为:www.163.com/abc.htm,有锚点的URL则为:www.163.com/abc.htm#section,即WEB页面的URL跳转信息还包括同一页面的不同部分的跳转。对于操作信息是“WEB页面的URL跳转信息”及“用户在WEB页面中操作事件信息”的情况,一般特别针对H5页面和APP混合编程的情形。
在一种优选实施方式中,为了节省存储空间,针对操作信息队列进行长度管理。例如,为操作信息队列设置长度阈值;当操作信息队列中存储的操作信息达到长度阈值时,按照存储时间顺序,将存储时间最早的操作信息进行丢弃。操作信息队列的长度可以根据实际需要指定为任意数量。当进入操作信息队列的操作信息达到队列长度上限时,将操作队列中最早进入的操作信息抛弃。由此保证操作信息队列仅保存最近发生的、有限个数的、有序的操作信息。
S202:启动程序之后,在程序运行客户端存储来自程序的场景信息。
操作信息中的某些类型信息,对于定位异常崩溃有着很重要的作用,比如用户操作所处的页面位置、用户正在进行的业务等等。为了防止这些重要的操作信息被后面加入的操作信息挤占,被操作信息队列丢弃掉。本发明方法优选方式中,还会额外提供一个场景信息队列,按照类似前述方式单独存储这些重要的操作信息。场景信息队列是该发明方法提供的一个可选策略。
具体的,可以通过在程序运行客户端设置一个场景信息队列来存储这些比较重要的场景信息,场景信息按照加入的顺序,依次有序存储到场景信息队列中。例如,提供一个长度有限的场景信息队列。当程序启动之后,用于存储来自程序的场景信息。场景信息按照加入的顺序,依次有序的存储到场景信息队列。场景信息一般是指屏幕埋点信息,包含且不限于:用户操作所处客户端页面的位置信息、用户所处业务的业务信息、用户所处WEB页面的位置信息,等等。
场景信息是可反映页面调用关系或页面展示顺序的信息。其中,用户操作所处客户端页面的位置信息,顾名思义,是指客户端在当前哪一个页面上、即当前页面的位置信息。用户所处业务的业务信息,是指用户正在进行的业务流程的某个环节或某个节点的信息。用户所处WEB页面的位置信息为用户所处的WEB页面的地址信息,包括用户所处WEB页面的页面本身的地址信息,还可以包括页面中子位置的地址信息。
在一种优选实施方式中,为了节省存储空间,针对场景信息队列进行长度管理。例如,为场景信息队列设置长度阈值;当场景信息队列中存储的场景信息达到长度阈值时,按照存储时间顺序,将存储时间最早的场景信息进行丢弃。场景信息队列的长度可以根据实际需要指定为任意数量。当进入场景信息队列的操作信息达到队列长度上限时,将场景信息队列中最早进入的场景信息抛弃。由此保证场景信息队列仅保存最近发生的、有限个数的、有序的场景信息。
S203:将客户端存储的操作信息和/或场景信息上报给服务器。
具体的,可以定期或在特定时刻(例如发生异常时),由程序运行客户端将所存储的操作信息和/或场景信息提供给服务器。当然,也可以由服务器定期或在特定时刻请求程序运行客户端上报操作信息和/或场景信息。一种实际情况时,当程序异常发生后,操作信息队列以及场景信息队列会随着调用栈崩溃信息,一起上传到服务器。
S204:进行程序异常分析时,从服务器获取操作信息,通过解析操作信息,解读用户及程序的操作路径,从而还原程序异常前的操作场景。
S205:进行程序异常分析时,从服务器获取所述场景信息,解析所述场景信息,解读程序中代码调用关系,从而还原程序异常前的操作场景。
解析操作信息队列以及场景信息队列的方法可以为:根据操作信息队列按顺序解读用户、程序的操作路径,还原程序异常前的操作场景。如果操作信息队列中缺乏用户所处的页面、业务等重要的操作信息,可以辅以场景信息队列进行解析:获知用户所处客户端页面的位置信息和/或,用户所处业务的场景信息,和/或用户所处WEB页面的位置信息的URL跳转信息(包含锚点跳转),从而解读程序中代码调用关系。
下面举一个实际例子。
假设技术人员收到了一个主线程异常报告,主线程异常调用栈信息如下:
name=SIGSEGV
reason=SEGV_ACCERR
callstack=
0 libsystem_platform.dylib_sigtramp+68
1 UIKit-[UIImagePickerController_imagePickerDidCompleteWithInfo:]
2 PhotoLibrary PLNotifyImagePickerOfImageAvailability+88
3 PhotoLibrary 0x0000000192561728 0x1924d8000+562984
4 PhotoLibrary 0x0000000192561540 0x1924d8000+562496
5 UIKit-[UIApplication sendAction:to:from:forEvent:]
6 UIKit-[UIControl_sendActionsForEvents:withEvent:]
7 UIKit-[UIControl touchesEnded:withEvent:]
8 UIKit-[UIWindow_sendTouchesForEvent:]
9 UIKit-[UIWindow sendEvent:]
10 UIKit-[UIApplication sendEvent:]
11 UIKit__UIApplicationHandleEventFromQueueEvent
12 UIKit__UIApplicationHandleEventQueue
13CoreFoundation___CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
14 CoreFoundation___CFRunLoopDoSources0
15 CoreFoundation___CFRunLoopRun
16 CoreFoundation CFRunLoopRunSpecific+396
17 GraphicsServices GSEventRunModal+168
18 UIKit UIApplicationMain+1488
19 NEFinance_main main.m:35
20 libdyld.dylib_start
经过解析,技术人员发现,异常的直接原因是一个系统API的调用出现问题,即选择系统图片出现问题。但是这个系统API的调用定位不到技术人员所写的代码(NEFinance为技术人员所写的代码位置。但主线程一开始都会存在一个main的调用。第一个NEFinance位置对于解析异常没有参考价值)。如果只凭借这个信息,是无法具体定位异常具体发生的原因的。
那么,加入采用本发明实施例的方式,存储、分析如下的操作信息队列和场景信息队列,即可解决此问题。
操作信息队列:
Phome_service_我要借钱:WYXD,
*Phome,
*Pmy_verify(_TN),
*Pmy_verify(_TN),
*Pmy_addcard(_TN),
Pverify_enterpage_添加银行卡,
Phome_service_我要借钱:WYXD,
*Phome,Plogin_login_登录,
*Popenscreen,
*Phome
场景信息队列:
*Phome,
*Pmy_verify(_TN),
*Pmy_verify(_TN),
*Pmy_addcard(_TN),
*Phome,Plogin_login_登录,
*Popenscreen,
*Phome
注:符号*表示着这是一个页面埋点操作信息。
技术人员对操作信息队列以及场景信息队列解析后发现,异常发生在用户进入首页(*Phome)点击功能“借钱”(Phome_service_我要借钱:WYXD)后发生的。可以定位到该异常发生在“借钱”这个功能中。该功能中确实存在一个选择系统图片API的调用。同时还发现,该用户是一个新用户,并且在“借钱”功能中,进行了实名添卡操作(*Pmy_addcard(_TN))。这些信息对于技术人员还原异常发生的根本原因可起到至关重要的作用。
本发明实施例提供的方案相对于现有的技术方案,至少存在如下技术效果:
1、现有的技术方案,对于异常调用栈没有定位到开发人员代码的情况,是难以分析、定位问题的。本发明方案,从还原用户操作场景的角度出发,有效的帮助技术人员定位问题所在,回避了现有技术方案依赖异常调用栈所导致的局限性。
2、现有的技术方案,不能还原用户的操作场景,技术人员只能依靠有限数据,猜测用户触发异常的操作场景,只有模拟出可复现的异常场景,才能有效的定位、解决异常问题,如果不能复现异常场景,解决方案可能是无效的。本发明方案,能够精准提供用户触发异常的操作场景,减少猜测,提高了分析、定位问题的效率。
3、本发明方案,利用程序原有埋点信息,提升场景还原效果,避免额外的开发成本。埋点信息本身就是产品设置的、还原用户操作的信息。它作为需求,在开发时就已经写入了程序。程序员利用埋点信息还原用户操作场景,无需做过多额外工作,就可以获得详尽的信息。此外,埋点信息的设计本身就考虑到隐私、安全性等问题。因此,利用埋点信息还原异常场景也是比较合适的解决方案。
示例性系统
在介绍了本发明示例性实施方式的方法之后,接下来,参考图1对本发明示例性实施方式的、用于APP分析或网站分析的程序异常的处理系统进行介绍。
请参考图1,该系统包括程序运行客户端101、服务器102和异常分析客户端103。其中,程序运行客户端101用于在启动程序之后,存储来自程序的操作信息;以及,将所存储的操作信息上报给服务器102;服务器102,用于接收操作信息;异常分析客户端103,用于进行程序异常分析,包括从服务器102获取操作信息,通过解析操作信息,解读用户及程序的操作路径,从而还原程序异常前的操作场景。
在一种优选方式中,所述程序运行客户端还用于:设置操作信息队列,利用所述操作信息队列存储所述操作信息;其中,所述操作信息按照加入的顺序,依次有序存储到所述操作信息队列中。具体的,可以通过在程序运行客户端设置一个操作信息队列来存储操作信息,操作信息按照加入的顺序,依次有序存储到操作信息队列中。例如,提供一个长度有限的操作信息队列。当程序启动之后,用于存储来自程序的操作信息。操作信息按照加入的顺序,依次有序的存储到操作信息队列。操作信息包含且不限于用户操作埋点信息、屏幕埋点信息、技术设计相关信息、WEB页面的URL跳转信息、用户在WEB页面中操作事件信息,等等。
其中,埋点是一种常用的数据采集方法,是在产品转化关键点、服务转化关键点植入统计代码,追踪用户在平台每个界面上的系列行为。可以理解,用户操作埋点信息一般是跟踪用户操作的埋点信息,例如,用户基于页面进行相关按钮点击等操作的信息。屏幕埋点信息一般是指反映页面调用关系或页面展示顺序的信息。技术设计相关信息是指技术人员设计的且可以传递到服务器的相关信息,比如用于观察接口连接成功率或观察接口调用关系的信息。WEB页面的URL跳转信息包括不同页面的URL之间的跳转信息,也可以包括锚点跳转信息,对于URL,锚点有后缀,例如,无锚点的URL为:www.163.com/abc.htm,有锚点的URL则为:www.163.com/abc.htm#section,即WEB页面的URL跳转信息还包括同一页面的不同部分的跳转。对于操作信息是“WEB页面的URL跳转信息”及“用户在WEB页面中操作事件信息”的情况,一般特别针对H5页面和APP混合编程的情形。
在一种优选实施方式中,为了节省存储空间,针对操作信息队列进行长度管理。例如,所述程序运行客户端还用于:为操作信息队列设置长度阈值;当操作信息队列中存储的操作信息达到长度阈值时,按照存储时间顺序,将存储时间最早的操作信息进行丢弃。操作信息队列的长度可以根据实际需要指定为任意数量。当进入操作信息队列的操作信息达到队列长度上限时,将操作队列中最早进入的操作信息抛弃。由此保证操作信息队列仅保存最近发生的、有限个数的、有序的操作信息。
操作信息中的某些类型信息,对于定位异常崩溃有着很重要的作用,比如用户操作所处的页面位置、用户正在进行的业务等等。为了防止这些重要的操作信息被后面加入的操作信息挤占,被操作信息队列丢弃掉。本发明方法优选方式中,还会额外提供一个场景信息队列,按照类似前述方式单独存储这些重要的操作信息。场景信息队列是该发明方法提供的一个可选策略。
因此,在一种优选方式中,所述程序运行客户端还用于:设置场景信息队列,利用所述场景信息队列存储场景信息,其中,所述场景信息按照加入的顺序,依次有序存储到所述场景信息队列中;将所述场景信息队列发送给服务器。
具体的,可以通过在程序运行客户端设置一个场景信息队列来存储这些比较重要的场景信息,场景信息按照加入的顺序,依次有序存储到场景信息队列中。例如,提供一个长度有限的场景信息队列。当程序启动之后,用于存储来自程序的场景信息。场景信息按照加入的顺序,依次有序的存储到场景信息队列。场景信息一般是指屏幕埋点信息,包含且不限于:用户操作所处客户端页面的位置信息、用户所处业务的业务信息、用户所处WEB页面的位置信息,等等。
场景信息是可反映页面调用关系或页面展示顺序的信息。其中,用户操作所处客户端页面的位置信息,顾名思义,是指客户端在当前哪一个页面上、即当前页面的位置信息。用户所处业务的业务信息,是指用户正在进行的业务流程的某个环节或某个节点的信息。用户所处WEB页面的位置信息为用户所处的WEB页面的地址信息,包括用户所处WEB页面的页面本身的地址信息,还可以包括页面中子位置的地址信息。
在一种优选实施方式中,为了节省存储空间,所述程序运行客户端还用于针对场景信息队列进行长度管理。例如,所述程序运行客户端还用于,为场景信息队列设置长度阈值;当场景信息队列中存储的场景信息达到长度阈值时,按照存储时间顺序,将存储时间最早的场景信息进行丢弃。场景信息队列的长度可以根据实际需要指定为任意数量。当进入场景信息队列的操作信息达到队列长度上限时,将场景信息队列中最早进入的场景信息抛弃。由此保证场景信息队列仅保存最近发生的、有限个数的、有序的场景信息。
在一种优选方式中,所述异常分析客户端还用于:获取并解析所述场景信息,获知用户所处页面的位置信息和/或用户所处业务的场景信息。
在一种优选方式中,述场景信息包括用户操作所处页面的位置信息、用户所处业务的业务信息和/或用户所处WEB页面的位置信息。
在一种优选方式中,所述WEB页面的URL跳转信息包括锚点跳转信息。
在一种优选方式中,所述用户所处WEB页面的位置信息包括用户所处WEB页面的页面中子位置信息。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (12)

1.一种程序异常的处理方法,其特征在于,包括:
启动程序之后,在程序运行客户端存储来自程序的操作信息和场景信息,所述场景信息为程序原有屏幕埋点信息,包含用户操作所处客户端页面的位置信息、用户所处业务的业务信息、用户所处WEB页面的位置信息一种或其组合,其中所述埋点是在产品转化关键点、服务转化关键点植入的统计代码,追踪用户在平台每个界面上的系列行为,以及在所述客户端设置操作信息队列,利用所述操作信息队列存储所述操作信息,所述操作信息按照加入的顺序,依次有序存储到所述操作信息队列中,为所述操作信息队列设置长度阈值,当所述操作信息队列中存储的操作信息达到所述长度阈值时,按照存储时间顺序,将存储时间最早的操作信息进行丢弃,以及在所述客户端设置场景信息队列,利用所述场景信息队列存储场景信息,所述场景信息按照加入的顺序,依次有序存储到所述场景信息队列中,为所述场景信息队列设置长度阈值,当所述场景信息队列中存储的场景信息达到所述长度阈值时,按照存储时间顺序,将存储时间最早的场景信息进行丢弃;
当程序异常发生后,将所述客户端存储的操作信息和场景信息随着调用栈崩溃信息上报给服务器;
进行程序异常分析时,对于异常调用栈没有定位到异常代码的情况,从所述服务器获取所述操作信息和场景信息,所述场景信息反映页面调用关系或页面展示顺序的信息,通过解析所述操作信息和场景信息,解读用户及程序的操作路径以及解读程序中代码调用关系,从而还原程序异常前的操作场景,进而结合异常调用栈来定位异常代码。
2.如权利要求1所述的方法,其特征在于,所述操作信息包括用户操作埋点信息。
3.如权利要求1或2所述的方法,其特征在于,所述进行程序异常分析时,所述方法还包括:
从所述服务器获取所述场景信息;
解析所述场景信息,获知用户所处客户端页面的位置信息,用户所处业务的业务信息,和/或用户所处WEB页面的位置信息。
4.如权利要求1或2所述的方法,其特征在于,所述场景信息包括用户操作所处客户端页面的位置信息、用户所处业务的业务信息、和/或用户所处WEB页面的位置信息。
5.如权利要求1或2所述的方法,其特征在于,所述WEB页面的URL跳转信息包括锚点跳转信息。
6.如权利要求4所述的方法,其特征在于,所述用户所处WEB页面的位置信息包括用户所处WEB页面的页面中子位置信息。
7.一种程序异常的处理系统,其特征在于,包括:
程序运行客户端,用于在启动程序之后,存储来自程序的操作信息和场景信息,所述场景信息为程序原有屏幕埋点信息,包含用户操作所处客户端页面的位置信息、用户所处业务的业务信息、用户所处WEB页面的位置信息一种或其组合,其中所述埋点是在产品转化关键点、服务转化关键点植入的统计代码,追踪用户在平台每个界面上的系列行为,所述程序运行客户端还用于:设置操作信息队列,利用所述操作信息队列存储所述操作信息,其中,所述操作信息按照加入的顺序,依次有序存储到所述操作信息队列中,为所述操作信息队列设置长度阈值,当所述操作信息队列中存储的操作信息达到所述长度阈值时,按照存储时间顺序,将存储时间最早的操作信息进行丢弃,以及所述程序运行客户端还用于:设置场景信息队列,利用所述场景信息队列存储场景信息,所述场景信息按照加入的顺序,依次有序存储到所述场景信息队列中,为所述场景信息队列设置长度阈值,当所述场景信息队列中存储的场景信息达到所述长度阈值时,按照存储时间顺序,将存储时间最早的场景信息进行丢弃,以及,当程序异常发生后,将所存储的操作信息和场景信息随着调用栈崩溃信息上报给服务器;
服务器,用于接收来自程序运行客户端当程序异常发生后上报的所述操作信息和场景信息以及调用栈崩溃信息;
异常分析客户端,用于进行程序异常分析,包括对于异常调用栈没有定位到异常代码的情况,从所述服务器获取所述操作信息和场景信息,所述场景信息反映页面调用关系或页面展示顺序的信息,通过解析所述操作信息和场景信息,解读用户及程序的操作路径以及解读程序中代码调用关系,从而还原程序异常前的操作场景,进而结合异常调用栈来定位异常代码。
8.如权利要求7所述的系统,其特征在于,所述操作信息包括用户操作埋点信息。
9.如权利要求7或8所述的系统,其特征在于,所述异常分析客户端还用于:获取并解析所述场景信息,获知用户所处页面的位置信息和/或用户所处业务的场景信息。
10.如权利要求7或8所述的系统,其特征在于,述场景信息包括用户操作所处页面的位置信息、用户所处业务的业务信息和/或用户所处WEB页面的位置信息。
11.如权利要求7或8所述的系统,其特征在于,所述WEB页面的URL跳转信息包括锚点跳转信息。
12.如权利要求10所述的系统,其特征在于,所述用户所处WEB页面的位置信息包括用户所处WEB页面的页面中子位置信息。
CN201710094301.9A 2017-02-21 2017-02-21 程序异常的处理方法及系统 Active CN108459952B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710094301.9A CN108459952B (zh) 2017-02-21 2017-02-21 程序异常的处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710094301.9A CN108459952B (zh) 2017-02-21 2017-02-21 程序异常的处理方法及系统

Publications (2)

Publication Number Publication Date
CN108459952A CN108459952A (zh) 2018-08-28
CN108459952B true CN108459952B (zh) 2024-05-24

Family

ID=63222020

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710094301.9A Active CN108459952B (zh) 2017-02-21 2017-02-21 程序异常的处理方法及系统

Country Status (1)

Country Link
CN (1) CN108459952B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109146096B (zh) * 2018-09-07 2020-11-17 上海携程商务有限公司 报修事件的处理方法、装置、存储介质及电子设备
CN109871963A (zh) * 2019-01-08 2019-06-11 西藏纳旺网络技术有限公司 运行故障还原方法、装置、电子设备及存储介质
CN112241374A (zh) * 2020-11-19 2021-01-19 上海连尚网络科技有限公司 一种用于处理崩溃信息的方法与设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675957A (ja) * 1992-08-26 1994-03-18 Nec Corp 編集中障害の復旧機構
CN102385549A (zh) * 2010-09-02 2012-03-21 北京无限立通通讯技术有限责任公司 日志处理系统、日志处理方法和日志存储子系统
CN104699591A (zh) * 2013-12-06 2015-06-10 腾讯科技(深圳)有限公司 一种测试场景重现方法以及装置
CN104714948A (zh) * 2013-12-11 2015-06-17 部落邦(北京)科技有限责任公司 一种回放用户网页操作行为的方法、系统及热图展现装置
CN106294173A (zh) * 2016-08-18 2017-01-04 北京创锐文化传媒有限公司 数据处理方法、装置及服务器
CN106294116A (zh) * 2015-06-11 2017-01-04 阿里巴巴集团控股有限公司 记录和重现操作过程的方法、装置和系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675957A (ja) * 1992-08-26 1994-03-18 Nec Corp 編集中障害の復旧機構
CN102385549A (zh) * 2010-09-02 2012-03-21 北京无限立通通讯技术有限责任公司 日志处理系统、日志处理方法和日志存储子系统
CN104699591A (zh) * 2013-12-06 2015-06-10 腾讯科技(深圳)有限公司 一种测试场景重现方法以及装置
CN104714948A (zh) * 2013-12-11 2015-06-17 部落邦(北京)科技有限责任公司 一种回放用户网页操作行为的方法、系统及热图展现装置
CN106294116A (zh) * 2015-06-11 2017-01-04 阿里巴巴集团控股有限公司 记录和重现操作过程的方法、装置和系统
CN106294173A (zh) * 2016-08-18 2017-01-04 北京创锐文化传媒有限公司 数据处理方法、装置及服务器

Also Published As

Publication number Publication date
CN108459952A (zh) 2018-08-28

Similar Documents

Publication Publication Date Title
CN108595329B (zh) 一种应用测试方法、装置及计算机存储介质
CN107239389B (zh) 一种在混合app中确定用户操作记录的方法及装置
CN110290212A (zh) 服务调用记录方法、装置、计算机设备和存储介质
US20160283357A1 (en) Call stack relationship acquiring method and apparatus
CN105335283A (zh) 终端设备中的应用测试方法及装置
CN107783795A (zh) 应用程序启动方法、装置、计算机设备和存储介质
CN109375921B (zh) 页面文件快速编译方法、装置及存储设备、计算机设备
JP2006031109A (ja) 管理システム及び管理方法
US20140365833A1 (en) Capturing trace information using annotated trace output
KR101748833B1 (ko) 소프트웨어 고장의 위치 확정 방법, 장치 및 설비
CN108459952B (zh) 程序异常的处理方法及系统
CN111414309A (zh) 应用程序的自动化测试方法、计算机设备和存储介质
US20130185602A1 (en) Heap dump occurrence detection
CN110096442B (zh) 代码调试方法、用户设备、存储介质及装置
CN115620799A (zh) 基于固件仿真的故障现场回溯方法、设备及可读存储介质
CN113342431A (zh) 函数调用栈回溯、程序异常处理方法、装置、设备及介质
US8171345B2 (en) Disablement of an exception generating operation of a client system
US8201151B2 (en) Method and system for providing post-mortem service level debugging
CN112162954B (zh) 用户操作日志生成、路径的定位方法、装置、设备及介质
CN111176653B (zh) 程序编译合包方法、装置、电子设备及存储介质
CN116010244A (zh) 自动化测试方法、装置、电子设备及存储介质
US11307920B2 (en) Automated crash recovery
CN113986622A (zh) Sdk异常的自检方法、装置、介质和计算设备
CN113568834A (zh) Sdk代码的兼容性检测方法、装置、计算机设备和介质
CN115982018B (zh) 一种基于ocr的ui测试方法、系统、计算机设备和存储介质

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