CN111427738B - 展示方法、应用监控模块、字节码增强模块及展示*** - Google Patents

展示方法、应用监控模块、字节码增强模块及展示*** Download PDF

Info

Publication number
CN111427738B
CN111427738B CN201910020466.0A CN201910020466A CN111427738B CN 111427738 B CN111427738 B CN 111427738B CN 201910020466 A CN201910020466 A CN 201910020466A CN 111427738 B CN111427738 B CN 111427738B
Authority
CN
China
Prior art keywords
code
application program
abnormal
abnormality
information
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
CN201910020466.0A
Other languages
English (en)
Other versions
CN111427738A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201910020466.0A priority Critical patent/CN111427738B/zh
Publication of CN111427738A publication Critical patent/CN111427738A/zh
Application granted granted Critical
Publication of CN111427738B publication Critical patent/CN111427738B/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/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种异常代码的展示方法、应用监控模块、字节码增强模块、及异常代码的展示***,该展示方法包括:由字节码增强模块控制应用程序加载自身的字节码,控制应用程序运行指定的转换字节码,以使应用程序对加载的字节码进行反编译处理,得到应用程序的源代码,控制应用程序将源代码上传至服务器中进行存储;由应用监控模块获取反映应用程序执行过程中发生异常的异常信息;根据异常信息从预存在服务器内的源代码中获取出现异常的代码,作为异常代码;展示异常代码。

Description

展示方法、应用监控模块、字节码增强模块及展示***
技术领域
本发明涉及应用性能管理技术领域,更具体地,涉及一种异常代码的展示方法、应用监控模块、字节码增强模块、及异常代码的展示***。
背景技术
在信息科学和***控制领域,应用监控模块(Application PerformanceManagement&Monitoring,APM)致力于监控和管理应用软件性能和可用性。通过监测和诊断复杂应用程序的性能问题,来保证软件应用程序的良好运行。
应用监控模块可以用于监控应用程序运行过程中的信息、CPU、每秒查询率(QueryPer Second,QPS)、日志等。当应用程序出现故障时,应用监控模块可以得到应用程序的异常信息。例如,该应用监控模块可以是ARMS(Application Real-Time MonitoringService)。
但是,在现有技术中,应用监控模块无法根据得到的异常信息展示应用程序执行异常的代码。导致用户无法快速根据异常信息定位到发生异常的源代码,以对异常进行处理。
发明内容
本发明的一个目的是提供一种展示异常代码的新技术方案。
根据本发明的第一方面,提供了一种异常代码的展示方法,所述展示方法由应用监控模块实施,所述展示方法包括:
获取反映应用程序执行过程中发生异常的异常信息;
根据所述异常信息从预存在所述服务器内的源代码中获取出现异常的代码,作为异常代码;
展示所述异常代码。
可选的,所述获取反映所述应用程序执行过程中发生异常的异常信息的步骤包括:
获取在拦截所述应用程序的指定方法的异常切面的情况下所拦截到的信息,作为所述异常信息。
可选的,所述获取反映所述应用程序执行过程中发生异常的异常信息的步骤包括:
获取应用程序在执行过程中发生异常的情况下生成的异常日志堆栈;
获取所述异常日志堆栈中包含的信息,作为所述异常信息。
可选的,所述方法还包括:
检测获取异常信息的触发事件是否发生;
根据所述触发事件的检测结果,执行所述获取反映所述应用程序执行过程中发生异常的异常信息的步骤。
可选的,所述触发事件包括以下任意一项或多项:
达到预设的信息获取周期;
在拦截所述应用程序的指定方法的异常切面的情况下,拦截到所述异常信息;
生成异常日志堆栈。
可选的,所述异常信息包括方法名、类名、及代码行数;
所述根据所述异常信息从预存在所述服务器内的源代码中获取出现异常的代码,作为异常代码的步骤包括:
根据所述类名确定所述源代码中包含的发生异常的类,作为异常类;
根据所述方法名确定所述异常类中包含的发生异常的方法,作为异常方法;
根据所述代码行数确定所述异常方法中包含的发生异常的代码,作为所述异常代码;
获取所述异常代码。
根据本发明的第二方面,提供了一种异常代码的展示方法,所述展示方法由字节码增强模块实施,所述展示方法包括:
控制所述应用程序加载自身的字节码;
控制所述应用程序运行指定的转换字节码,以使所述应用程序对加载的字节码进行反编译处理,得到所述应用程序的源代码;
控制所述应用程序将所述源代码上传至服务器中进行存储。
可选的,所述展示方法还包括:
检测所述应用程序的启动事件是否发生;
根据所述启动事件的检测结果,执行所述控制所述应用程序加载自身的字节码的步骤。
根据本发明的第三方面,提供了一种应用监控模块,包括第一处理器和第一存储器,所述第一存储器用于存储可执行的第一指令,所述第一指令用于控制所述第一处理器执行根据本发明第一方面所述的展示方法。
根据本发明的第四方面,提供了一种字节码增强模块,包括第二处理器和第二存储器,所述第二存储器用于存储可执行的第二指令,所述第二指令用于控制所述第二处理器执行根据本发明第二方面所述的展示方法。
根据本发明的第五方面,提供了一种异常代码的展示***,包括服务器、根据本发明第三方面所述的应用监控模块、及根据本发明第四方面所述的字节码增强模块,所述服务器用于存储源代码。
在本发明的实施例中,由字节码增强模块控制应用程序每次启动时将自身的源代码上传至服务器中进行存储,供应用监控模块根据异常信息获取异常代码进行展示。这样,可以无需对应用程序的代码进行修改。而且,可以保证上传至服务器中的源代码为应用程序所执行的版本。此外,由于是将源代码上传至服务器中进行存储,可以使得对设置字节码增强模块的电子设备的性能影响较小。在应用程序运行异常时,可以唯一快速准确地定位到异常代码并进行展示,供用户进行处理,可以节省用户解决异常的时间,还可以提升用户体验。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1是显示可用于实现本发明的实施例的电子设备的硬件配置的例子的框图。
图2示出了本发明的第一实施例的异常代码的展示方法的流程图。
图3示出了本发明的第一实施例的获取异常代码的步骤的流程图。
图4示出了本发明的第一实施例的应用监控模块的框图。
图5示出了本发明的第二实施例的异常代码的展示方法的流程图。
图6示出了本发明的第二实施例的字节码增强模块的框图。
图7示出了本发明的第三实施例的异常代码的展示***的框图。
图8示出了本发明的第三实施例的异常代码的展示***实施的异常代码的展示方法的流程图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<硬件配置>
图1是示出可以实现本发明的实施例的电子设备1000的硬件配置的框图。
电子设备1000可以是便携式电脑、台式计算机、手机、平板电脑等。如图1所示,电子设备1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800等等。其中,处理器1100可以是中央处理器CPU、微处理器MCU等。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、耳机接口等。通信装置1400例如能够进行有线或无线通信,具体地可以包括Wifi通信、蓝牙通信、2G/3G/4G/5G通信等。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘、体感输入等。用户可以通过扬声器1700和麦克风1800输入/输出语音信息。
图1所示的电子设备仅仅是说明性的并且决不意味着对本发明、其应用或使用的任何限制。应用于本发明的实施例中,电子设备1000的所述存储器1200用于存储指令,所述指令用于控制所述处理器1100进行操作以执行本发明实施例提供的任意一项异常代码的展示方法。本领域技术人员应当理解,尽管在图1中对电子设备1000示出了多个装置,但是,本发明可以仅涉及其中的部分装置,例如,电子设备1000只涉及处理器1100和存储装置1200。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
本发明实施例的总体构思,是提供一种展示异常代码的新技术方案,由字节码增强模块控制应用程序每次启动时将自身的源代码上传至服务器中进行存储,供应用监控模块根据异常信息获取异常代码进行展示。这样,可以无需对应用程序的代码进行修改。而且,可以保证上传至服务器中的源代码为应用程序所执行的版本。此外,由于是将源代码上传至服务器中进行存储,可以使得对设置字节码增强模块的电子设备的性能影响较小。在应用程序运行异常时,可以唯一快速准确地定位到异常代码并进行展示,供用户进行处理,可以节省用户解决异常的时间,还可以提升用户体验。
<第一实施例>
<方法>
在本实施例中,提供一种异常代码的展示方法。该展示方法可以是由设置在电子设备中的应用性能管理模块实施。
在本实施例中,异常代码的展示方法可以如图2所示,包括步骤S2100-S2300。
步骤S2100,获取反映应用程序执行过程中发生异常的异常信息。
该异常信息可以是在应用程序发生异常的情况下得到的,能够反映应用应用程序执行过程中发生的具体异常情况。
在一个例子中,获取异常信息的步骤可以进一步为:获取在拦截该应用程序的指定方法的异常切面的情况下所拦截到的信息,作为异常信息。
电子设备可以是实时或者是按照预设的拦截频率来拦截指定方法的异常切面。指定方法例如可以是应用程序的公共方法,在执行该应用程序的每个方法时,都会同时执行该指定方法。
通过拦截指定方法的异常切面,就可以拦截到发生异常的代码所对应的信息,即异常信息。
本实施例中的异常信息可以包括执行发生异常的代码的类名、方法名和行数。其中,执行发生异常的代码的行数为执行发生异常的代码在应用程序的所有代码中的行数。
具体的,如果在执行目标方法的某一行代码过程中发生异常,则获取到的参数包括目标方法的类名、目标方法的方法名、及目标方法的所述某一行代码的行数。
在另一个例子中,获取异常信息的步骤还可以进一步为:获取应用程序在执行过程中发生异常的情况下生成的异常日志堆栈;获取该异常日志堆栈中包含的信息,作为异常信息。
具体的,通过本实施例的应用性能管理模块,可以用于监控应用程序的每一方法的执行过程。应用程序的任一方法在执行过程中发生异常的情况下,可以生成反映该方法在调用过程出现异常的日志,即对应该方法的异常日志堆栈。
例如,获取的异常日志堆栈可以为:
java.lang.NullPointerException:at com.example.a3.core.service.anomaly.ItService.doSql(ItService.java:216)~[a3-core-2.0.0.jar:na]
那么,异常信息中包含的类名可以为:com.example.a3.core.service.anomaly.ItService,方法名可以为:doSql,代码行数可以为:216。
在一个例子中,该展示方法还可以包括:
检测获取异常信息的触发事件是否发生,根据触发事件的检测结果,执行步骤S2100。
具体的,可以是在检测到触发事件发生的情况下,执行步骤S2100来获取异常信息。如果没有检测到触发事件发生,则可以继续进行检测,无需执行步骤S2100来获取异常信息。
进一步地,触发事件例如可以包括以下任意一项或多项:
达到预设的信息获取周期;
在拦截应用程序的指定方法的异常切面的情况下,拦截到异常信息;
生成异常日志堆栈。
在触发事件包括达到预设的信息获取周期的情况下,预设的信息获取周期可以是预先根据应用场景设定好的。例如,该预设的信息获取周期可以是一小时。那么,可以每经过一小时执行一次步骤S2100,来获取这一小时内拦截到的所有异常信息、或者是获取这一小时内生成的所有异常日志堆栈中包含的异常信息。如果在一个信息获取周期内没有拦截到异常信息、或者是没有生成异常日志堆栈,则可以不执行步骤S2100,进入下一信息获取周期。在每次达到信息获取周期时,可以判定检测到获取异常信息的触发事件发生。
在触发事件包括拦截到异常信息的情况下,可以是在应用程序的执行过程中拦截应用程序的指定方法的异常切面,每次拦截到异常信息时,执行一次步骤S2100。因此,如果通过指定方法的异常切面拦截到异常信息,则表明检测到获取异常信息的触发事件发生。
在触发事件包括生成异常日志堆栈的情况下,可以是在应用程序的执行过程中发生异常时自动生成的异常日志堆栈。在每次生成一个异常堆栈日志时,执行一次步骤S2100。因此,如果生成异常日志堆栈,则表明检测到获取异常信息的触发事件发生。
步骤S2200,根据异常信息从预存在服务器内的源代码中获取出现异常的代码,作为异常代码。
该异常信息可以包括执行该应用程序时发生异常的代码所对应的方法名、类名、及代码行数。那么,根据执行该应用程序时发生异常的代码所对应的方法名、类名、及代码行数,就可以从服务器内预存的源代码中唯一确定发生异常的一行代码,即异常代码。
具体的,可以是字节码增强模块控制应用程序将其源代码上传至服务器中进行存储的。字节码增强模块可以是安装有用于实现字节码增强功能的工具(例如是Javaagent)的电子设备。Javaagent是Java提供的一种可以在加载class文件之前对字节码进行拦截修改的机制。
进一步地,字节码增强模块和应用监控模块可以是设置在同一电子设备上。
在一个实施例中,步骤S2200例如可以进一步包括如图3所示的步骤S2210-S2240:
步骤S2210,根据异常信息中包含的类名源代码中包含的发生异常的类,作为异常类。
在服务器中,由于源代码是按类名为基本单位进行存储的,因此,可以是通过异常信息中包含的类名从源代码中查找对应的类,作为异常类。
步骤S2220,根据异常信息中包含的方法名确定异常类中包含的发生异常的方法,作为异常方法。
每一类的代码可以按方法名为单位进行存储的,因此,可以是通过异常信息中包含的方法名从异常类中确定发生异常的方法,作为异常方法。
步骤S2230,根据代码行数确定异常方法中包含的发生异常的代码,作为异常代码。
每一方法的代码可以预先存储有对应方法的代码在所有代码中的起止行数。例如,异常方法的代码的起止行数可以是6-12行,表明在该应用程序的所有代码中的,第6-12行的代码为异常方法的代码。
通过异常信息中包含的代码行数,就可以确定异常方法中出现异常的代码。例如,在第6-12行的代码为异常方法的代码,异常信息中包含的代码行数为8的情况下,就可以唯一确定一行执行过程中出现异常的代码,即异常代码。
步骤S2240,获取异常代码。
可以是仅将异常代码从服务器中获取至应用监控模块中。还可以是将异常代码前后设定行数之间的代码均获取至应用监控模块中。例如,可以是将异常代码的前5行代码至异常代码的后10行代码均获取至应用监控模块中。还可以是将异常方法包含的所有代码(包括异常代码)均获取至应用监控模块中。
步骤S2300,展示异常代码。
在步骤S2240中仅获取到异常代码的情况下,可以仅显示异常代码。在步骤S2240中获取到异常代码前后设定行数之间的代码的情况下,在显示异常代码的同时,可以显示其他代码。在步骤S2240中获取到异常方法包含的所有代码的情况下,在显示异常代码的同时,可以显示异常方法中其他代码。显示界面上显示其他代码的情况下,可以是按照每行代码的行数进行显示。具体可以是将代码行数较小的代码显示在代码行数较大的代码的上方。
进一步地,可以是突出异常代码,以与其他代码进行区别。例如,可以是修改异常代码的颜色,修改异常代码的字体,修改异常代码的字号,在异常代码前标注(例如可以标注箭头等),和/或,将异常代码显示在显示界面的首行。
这样,在应用程序运行异常时,根据获取的异常信息,就可以唯一快速准确地定位到异常代码进行展示,供用户进行处理,可以节省用户解决异常的时间,还可以提升用户体验。
<应用监控模块>
在本例中,还提供一种应用监控模块400,如图4所示,包括:第一处理器410和第一存储器420。第一存储器420用于存储第一指令;该第一指令用于控制第一处理器410执行本实施例中任意一项所述的异常代码的展示方法。
在本实施例中,应用监控模块400还可以包括其他的装置或者模块,例如,如图1所示的电子设备1000。
本领域技术人员应当明白,可以通过各种方式来实现应用监控模块400。例如,可以通过指令配置处理器来实现应用监控模块400。例如,可以将指令存储在ROM中,并且当启动设备时,将指令从ROM读取到可编程器件中来实现应用监控模块400。例如,可以将应用监控模块400固化到专用器件(例如ASIC)中。可以将应用监控模块400分成相互独立的单元,或者可以将它们合并在一起实现。应用监控模块400可以通过上述各种实现方式中的一种来实现,或者可以通过上述各种实现方式中的两种或更多种方式的组合来实现。
在本实施例中,应用监控模块400可以具有多种实现形式,例如,应用监控模块400可以是任何的提供应用监控服务的软件产品或者应用程序中运行的功能模块,或者是这些软件产品或者应用程序的外设嵌入件、插件、补丁件等,还可以是这些软件产品或者应用程序本身。
以上已经结合附图描述了本实施例,根据本实施例,提供一种异常代码的展示方法及应用监控模块,通过获取反映应用程序执行过程中发生异常的异常信息,并根据该异常信息从服务器内预存的源代码中获取出现异常的异常代码,并进行展示。这样,在应用程序运行异常时,可以唯一快速准确地定位到异常代码并进行展示,供用户进行处理,可以节省用户解决异常的时间,还可以提升用户体验。
<第二实施例>
<方法>
在本实施例中,提供一种异常代码的展示方法。该展示方法可以是由设置在电子设备中的字节码增强模块实施。
在本实施例中,异常代码的展示方法可以如图5所示,包括步骤S5100-S5300。
步骤S5100,控制应用程序加载自身的字节码。
本实施例的应用程序具体为应用监控模块所监控的应用程序。
在一个例子中,该展示方法还可以包括:
检测应用程序的启动事件是否发生;根据该启动事件的检测结果,执行该步骤S5100。
具体的,可以是在检测到应用程序启动的情况下,控制应用程序加载自身的字节码。
字节码是一种包含执行程序,由一序列OP代码/数据对组成的二进制文件,是一种中间码。字节码通常不像源代码一样可以让人阅读,而是编码后的数值常量、引用、指令等构成的序列。字节码主要为了实现特定软件运行和软件环境、与硬件环境无关。
具体的,由于电子设备可以识别字节码,而无法识别源代码,因此,需要预先对应用程序的源代码进行编译处理得到字节码。在检测到应用程序启动的情况下,控制应用程序加载该字节码。
步骤S5200,控制该应用程序运行指定的转换字节码,以使该应用程序对加载的字节码进行反编译处理,得到应用程序的源代码。
本实施例中指定的转换字节码可以是transform增强字节码。在应用程序加载该转换字节码时,应用程序可以对加载的字节码进行反编译处理,得到源代码。
步骤S5300,控制应用程序将源代码上传至服务器中进行存储。
本实施例中,通过字节码增强模块执行的异常代码的展示方法,可以控制应用程序每次启动时将自身的源代码上传至服务器中进行存储,供应用监控模块根据异常信息获取异常代码进行展示。这样,可以无需对应用程序的代码进行修改。而且,可以保证上传至服务器中的源代码为应用程序所执行的版本。此外,由于是将源代码上传至服务器中进行存储,可以使得对设置字节码增强模块的电子设备的性能影响较小。
<字节码增强模块>
在本例中,还提供一种字节码增强模块600,如图6所示,包括:第二处理器610和第二存储器620。第二存储器620用于存储第二指令;该第二指令用于控制第二处理器610执行本实施例中任意一项所述的异常代码的展示方法。
在本实施例中,字节码增强模块600还可以包括其他的装置或者模块,例如,如图1所示的电子设备1000。
本领域技术人员应当明白,可以通过各种方式来实现字节码增强模块600。例如,可以通过指令配置处理器来实现字节码增强模块600。例如,可以将指令存储在ROM中,并且当启动设备时,将指令从ROM读取到可编程器件中来实现字节码增强模块600。例如,可以将字节码增强模块600固化到专用器件(例如ASIC)中。可以将字节码增强模块600分成相互独立的单元,或者可以将它们合并在一起实现。字节码增强模块600可以通过上述各种实现方式中的一种来实现,或者可以通过上述各种实现方式中的两种或更多种方式的组合来实现。
在本实施例中,字节码增强模块600可以具有多种实现形式,例如,字节码增强模块600可以是任何的提供应用监控服务的软件产品或者应用程序中运行的功能模块,或者是这些软件产品或者应用程序的外设嵌入件、插件、补丁件等,还可以是这些软件产品或者应用程序本身。
以上已经结合附图描述了本实施例,根据本实施例,提供一种异常代码的展示方法及字节码增强模块,通过控制应用程序加载自身的字节码,并控制应用程序运行指定的转换字节码,以使应用程序对加载的字节码进行反编译处理,并将得到的源代码上传至服务器中进行存储,供应用监控模块根据异常信息获取异常代码进行展示。这样,可以无需对应用程序的代码进行修改。而且,可以保证上传至服务器中的源代码为应用程序所执行的版本。此外,由于是将源代码上传至服务器中进行存储,可以使得对设置字节码增强模块的电子设备的性能影响较小。
<第三实施例>
<***>
在本实施例中,还提供一种异常代码的展示***700,如图7所示,包括:
本发明第一实施例中提供的应用监控模块400;
本发明第二实施例中提供的字节码增强模块600;以及,
服务器710,用于存储应用程序的源代码。
在一个例子中,异常代码的展示***700中的应用监控模块400和字节码增强模块600可以是设置在同一电子设备上,该电子设备例如可以是如图1所示的电子设备1000。
以下将结合图8举例进一步说明通过本实施例中的异常代码的展示***700实施的异常代码的展示方法。
该异常代码的展示方法,如图8所示,包括:步骤S810-S860。
步骤S810,由字节码增强模块600控制应用程序加载自身的字节码。
步骤S820,由字节码增强模块600控制该应用程序运行指定的转换字节码,以使该应用程序对加载的字节码进行反编译处理,得到应用程序的源代码
步骤S830,由字节码增强模块600控制应用程序将源代码上传至服务器中进行存储。
步骤S840,由服务器710存储源代码。
步骤S850,由应用监控模块400获取反映应用程序执行过程中发生异常的异常信息。
步骤S860,由应用监控模块400根据异常信息从预存在服务器内的源代码中获取出现异常的代码,作为异常代码。
步骤S870,由应用监控模块400展示异常代码。
应用监控模块400执行的异常代码的展示方法的步骤在第一实施例中已经详细说明,字节码增强模块600执行的异常代码的展示方法的步骤在第二实施例中已经详细说明,在此不再赘述。
在本例中,由字节码增强模块控制应用程序每次启动时将自身的源代码上传至服务器中进行存储,供应用监控模块根据异常信息获取异常代码进行展示。这样,可以无需对应用程序的代码进行修改。而且,可以保证上传至服务器中的源代码为应用程序所执行的版本。此外,由于是将源代码上传至服务器中进行存储,可以使得对设置字节码增强模块的电子设备的性能影响较小。在应用程序运行异常时,可以唯一快速准确地定位到异常代码并进行展示,供用户进行处理,可以节省用户解决异常的时间,还可以提升用户体验。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

Claims (10)

1.一种异常代码的展示方法,其中,所述展示方法由应用监控模块实施,所述展示方法包括:
获取反映应用程序执行过程中发生异常的异常信息;所述异常信息包括方法名、类名、及代码行数;
根据所述异常信息从预存在所述服务器内的源代码中获取出现异常的代码,作为异常代码;
其中,所述源代码为由字节码增强模块控制应用程序每次启动时,自身所执行的源代码;
展示所述异常代码;
所述获取反映所述应用程序执行过程中发生异常的异常信息的步骤包括:
获取在拦截所述应用程序的指定方法的异常切面的情况下所拦截到的信息,作为所述异常信息。
2.根据权利要求1所述的展示方法,其中,所述获取反映所述应用程序执行过程中发生异常的异常信息的步骤包括:
获取应用程序在执行过程中发生异常的情况下生成的异常日志堆栈;
获取所述异常日志堆栈中包含的信息,作为所述异常信息。
3.根据权利要求1所述的展示方法,其中,所述方法还包括:
检测获取异常信息的触发事件是否发生;
根据所述触发事件的检测结果,执行所述获取反映所述应用程序执行过程中发生异常的异常信息的步骤。
4.根据权利要求3所述的展示方法,其中,所述触发事件包括以下任意一项或多项:
达到预设的信息获取周期;
在拦截所述应用程序的指定方法的异常切面的情况下,拦截到所述异常信息;
生成异常日志堆栈。
5.根据权利要求1-4中任一项所述的展示方法,其中,
所述根据所述异常信息从预存在所述服务器内的源代码中获取出现异常的代码,作为异常代码的步骤包括:
根据所述类名确定所述源代码中包含的发生异常的类,作为异常类;
根据所述方法名确定所述异常类中包含的发生异常的方法,作为异常方法;
根据所述代码行数确定所述异常方法中包含的发生异常的代码,作为所述异常代码;
获取所述异常代码。
6.一种异常代码的展示方法,其中,所述展示方法由字节码增强模块实施,所述展示方法包括:
控制所述应用程序加载自身的字节码;
控制所述应用程序运行指定的转换字节码,以使所述应用程序对加载的字节码进行反编译处理,得到所述应用程序的源代码;
控制所述应用程序将所述源代码上传至服务器中进行存储;以供应用监控模块根据反映应用程序执行过程中发生异常的异常信息,从所述服务器内的所述源代码中获取出现异常的代码,作为异常代码进行展示,所述异常信息为所述应用监控模块在拦截所述应用程序的指定方法的异常切面的情况下所拦截到的信息,所述异常信息包括方法名、类名、及代码行数。
7.根据权利要求6所述的展示方法,其中,所述展示方法还包括:
检测所述应用程序的启动事件是否发生;
根据所述启动事件的检测结果,执行所述控制所述应用程序加载自身的字节码的步骤。
8.一种应用监控模块,其中,包括第一处理器和第一存储器,所述第一存储器用于存储可执行的第一指令,所述第一指令用于控制所述第一处理器执行根据权利要求1-5中任一项所述的展示方法。
9.一种字节码增强模块,其中,包括第二处理器和第二存储器,所述第二存储器用于存储可执行的第二指令,所述第二指令用于控制所述第二处理器执行根据权利要求6或7所述的展示方法。
10.一种异常代码的展示***,其中,包括服务器、根据权利要求8所述的应用监控模块、及根据权利要求9所述的字节码增强模块,所述服务器用于存储源代码。
CN201910020466.0A 2019-01-09 2019-01-09 展示方法、应用监控模块、字节码增强模块及展示*** Active CN111427738B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910020466.0A CN111427738B (zh) 2019-01-09 2019-01-09 展示方法、应用监控模块、字节码增强模块及展示***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910020466.0A CN111427738B (zh) 2019-01-09 2019-01-09 展示方法、应用监控模块、字节码增强模块及展示***

Publications (2)

Publication Number Publication Date
CN111427738A CN111427738A (zh) 2020-07-17
CN111427738B true CN111427738B (zh) 2024-04-05

Family

ID=71546018

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910020466.0A Active CN111427738B (zh) 2019-01-09 2019-01-09 展示方法、应用监控模块、字节码增强模块及展示***

Country Status (1)

Country Link
CN (1) CN111427738B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112162908B (zh) * 2020-09-30 2024-03-26 中国工商银行股份有限公司 基于字节码注入技术的程序调用链路监控实现方法及装置
CN114706733B (zh) * 2022-05-30 2022-09-20 支付宝(杭州)信息技术有限公司 切面程序异常的监控方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808266A (zh) * 2016-03-29 2016-07-27 广州华多网络科技有限公司 代码运行方法及装置
CN107463492A (zh) * 2017-06-29 2017-12-12 北京五八信息技术有限公司 应用程序故障定位方法及装置
CN107918565A (zh) * 2017-11-17 2018-04-17 广东小天才科技有限公司 一种应用程序的异常信息的上报方法及移动终端

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702959B2 (en) * 2005-08-02 2010-04-20 Nhn Corporation Error management system and method of using the same
US20090013208A1 (en) * 2008-03-31 2009-01-08 Dimuzio Thomas M Real time automated exception notification and reporting solution
JP5496792B2 (ja) * 2010-06-29 2014-05-21 インターナショナル・ビジネス・マシーンズ・コーポレーション コード変換プログラム、方法及びシステム
US20150378756A1 (en) * 2014-06-25 2015-12-31 SmartBear Software, Inc. Systems and methods for mobile application tracing instrumentation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808266A (zh) * 2016-03-29 2016-07-27 广州华多网络科技有限公司 代码运行方法及装置
CN107463492A (zh) * 2017-06-29 2017-12-12 北京五八信息技术有限公司 应用程序故障定位方法及装置
CN107918565A (zh) * 2017-11-17 2018-04-17 广东小天才科技有限公司 一种应用程序的异常信息的上报方法及移动终端

Also Published As

Publication number Publication date
CN111427738A (zh) 2020-07-17

Similar Documents

Publication Publication Date Title
US9990209B2 (en) Digital assistance device for facilitating multi-stage setup
US10713107B2 (en) Detecting a possible underlying problem among computing devices
US20130283100A1 (en) Testing device
CN107329659B (zh) 一种权限设置方法、装置、电子设备及存储介质
US8984487B2 (en) Resource tracker
CN111427738B (zh) 展示方法、应用监控模块、字节码增强模块及展示***
US10705858B2 (en) Automatic import of third party analytics
CN104156305A (zh) 一种应用程序测试方法及装置
TWI656453B (zh) 檢測系統及檢測方法
CN112445588A (zh) 应用任务的处理方法、装置、设备及可读存储介质
US10606580B2 (en) Cognitive identification of related code changes
CN111427737B (zh) 一种修改异常日志的方法、装置、及电子设备
CN106055367B (zh) 一种脚本文件载入方法及装置
CN111913707B (zh) 运行进程的复用方法和装置
CN111435328B (zh) 应用测试方法、装置、电子设备及可读存储介质
JP6018344B2 (ja) 動的読み込みコード解析装置、動的読み込みコード解析方法及び動的読み込みコード解析プログラム
KR102301293B1 (ko) 컴퓨터의 노후화 정도를 분석하는 사용자 단말의 성능 측정 방법
CN110865818A (zh) 应用关联域名的检测方法、装置及电子设备
CN105653143B (zh) 应用程序操作界面的处理方法及实现该方法的移动终端
KR101369254B1 (ko) 악성 애플리케이션 진단장치 및 방법
CN111191795A (zh) 一种训练机器学习模型的方法、装置及***
CN113326169A (zh) 一种数据监控方法、装置及电子设备
US9632918B1 (en) Creating expected test results using previous test results
CN108255375A (zh) 图像识别方法及***
JP6919399B2 (ja) 判定プログラム、情報処理装置、及び判定方法

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