一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于arthas的线上dubug方法、系统及计算机可读介质与流程

2022-06-16 03:22:15 来源:中国专利 TAG:


1.本发明涉及java线上服务实时调试技术领域,尤其涉及一种基于arthas的线上dubug方法、系统及计算机可读介质。


背景技术:

2.以往java程序上线后,如果出现了问题则只能通过为代码添加日志再上线,当再出现问题时,从日志上定位具体问题位置,这种方式非常耗时且会影响线上服务的稳定性。


技术实现要素:

3.本发明要解决的技术问题在于,针对现有技术存在的至少一个缺陷,提供一种基于arthas的线上dubug方法、系统及计算机可读介质。
4.本发明解决其技术问题所采用的技术方案是:构造一种基于arthas的线上dubug方法,包括以下步骤:
5.s1:启动arthas,获取需要监控的java服务;
6.s2:对与所述java服务对应的原class类文件进行在线反编译,获得源码;
7.s3:在线修改所述源码添加日志;
8.s4:对修改后的源码进行编译,获得修改后的class类文件;
9.s5:将所述修改后的class类文件替换掉所述原class类文件。
10.优选地,在本发明所述的基于arthas的线上dubug方法中,步骤s1包括:
11.s11:下载arthas-jar包并运行;
12.s12:根据接收到的选择指令,获取需要监控的java服务。
13.优选地,在本发明所述的基于arthas的线上dubug方法中,步骤s11包括:
14.根据接收到的linux命令curl-o https://arthas.aliyun.com/arthas-boot.jar,下载arthas-jar包;
15.根据接收到的linux命令java-jar arthas-boot.jar,运行arthas并显示当前的java服务。
16.优选地,在本发明所述的基于arthas的线上dubug方法中,步骤s2包括:
17.根据接收到的linux命令jad
‑‑
source-only需要反编译的class类文件路径》反编译后的输出路径,对与所述java服务对应的需要反编译的class类文件路径下的class类文件进行在线反编译,获得源码,并输出至反编译后的输出路径中。
18.优选地,在本发明所述的基于arthas的线上dubug方法中,步骤s3包括:
19.在线调用外部工具修改所述源码,并添加日志到问题点。
20.优选地,在本发明所述的基于arthas的线上dubug方法中,步骤s4还包括:
21.根据接收到的linux命令mc反编译后的输出路径-d class文件输出路经,将反编译后的输出路径下的所述修改后的class类文件输出至文件输出路经中。
22.优选地,在本发明所述的基于arthas的线上dubug方法中,步骤s5包括:
23.根据输入的linux命令redefine class文件输出路经,将文件输出路经下的所述修改后的class类文件替换掉所述原class类文件。
24.本发明还构造了一种基于arthas的线上dubug系统,包括:
25.服务获取模块,用于启动arthas,获取需要监控的java服务;
26.反编译模块,用于对与所述java服务对应的原class类文件进行在线反编译,获得源码;
27.修改模块,用于在线修改所述源码添加日志;
28.编译模块,用于对修改后的源码进行编译,获得修改后的class类文件;
29.替换模块,用于将所述修改后的class类文件替换掉所述原class类文件。
30.优选地,在本发明所述的基于arthas的线上dubug系统中,所述反编译模块,进一步用于根据接收到的linux命令jad
‑‑
source-only需要反编译的class类文件路径》反编译后的输出路径,对与所述java服务对应的需要反编译的class类文件路径下的class类文件进行在线反编译,获得源码,并输出至反编译后的输出路径中。
31.本发明还构造了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的基于arthas的线上dubug方法。
32.通过实施本发明,具有以下有益效果:
33.当java程序运行错误时,本发明可启动arthas,获取需要监控的java服务,利用arthas的在线反编译技术对与java服务对应的原class类文件进行在线反编译,获得源码,并利用arthas的在线编辑技术在线修改源码添加日志,然后对修改后的源码进行编译,获得修改后的class类文件,最后将修改后的class类文件替换掉原class类文件,从而实现无需重新发包即可添加日志代码进行debug的方法,可大大提高排查线上问题的效率。
附图说明
34.下面将结合附图及实施例对本发明作进一步说明,附图中:
35.图1是本发明基于arthas的线上dubug方法流程示意图;
36.图2是本发明基于arthas的线上dubug系统模块框图。
具体实施方式
37.为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
38.需要说明的是,附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
39.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
40.如图1所示,本发明公开了一种基于arthas的线上dubug方法,适用于java程序,包括以下步骤:
41.步骤s1:启动arthas,获取需要监控的java服务。
42.具体地,步骤s1包括:
43.步骤s11:下载arthas-jar包并运行;
44.步骤s12:根据接收到的选择指令,获取需要监控的java服务。其中,该选择指令为用户输入的选择指令。
45.在一些实施例中,该java程序运行在linux环境下,步骤s11包括:
46.根据接收到的linux命令curl-o https://arthas.aliyun.com/arthas-boot.jar,下载arthas-jar包;
47.根据接收到的linux命令java-jar arthas-boot.jar,运行arthas并显示当前的java服务。
48.步骤s2:对与java服务对应的原class类文件进行在线反编译,获得源码,从而利用arthas的在线反编译技术。具体包括:根据接收到的linux命令jad
‑‑
source-only需要反编译的class类文件路径》反编译后的输出路径,对与java服务对应的需要反编译的class类文件路径下的class类文件进行在线反编译,获得源码,并输出至反编译后的输出路径中。
49.步骤s3:在线修改源码添加日志。具体包括:在线调用外部工具修改源码,并添加日志到问题点,从而利用arthas的在线编辑技术。
50.步骤s4:对修改后的源码进行编译,获得修改后的class类文件。具体包括:对修改后的源码进行编译,获得修改后的class类文件,根据接收到的linux命令mc反编译后的输出路径-d class文件输出路经,将反编译后的输出路径下的修改后的class类文件输出至文件输出路经中。
51.步骤s5:将修改后的class类文件替换掉原class类文件。具体包括:根据输入的linux命令redefine class文件输出路经,将文件输出路经下的修改后的class类文件替换掉原class类文件。
52.在一些实施例中,本方法还包括步骤s6:重新运行java程序,当出现问题时,重新执行步骤s1-s5。
53.如图2所示,本发明还公开了一种基于arthas的线上dubug系统,适用于java程序,包括:服务获取模块、反编译模块、修改模块、编译模块和替换模块。
54.其中,在本实施例中,该服务获取模块用于启动arthas,获取需要监控的java服务。具体地,该服务获取模块进一步用于下载arthas-jar包并运行,根据接收到的选择指令,获取需要监控的java服务。其中,该选择指令为用户输入的选择指令。
55.在一些实施例中,该java程序运行在linux环境下,下载arthas-jar包并运行包括:
56.根据接收到的linux命令curl-o https://arthas.aliyun.com/arthas-boot.jar,下载arthas-jar包;
57.根据接收到的linux命令java-jar arthas-boot.jar,运行arthas并显示当前的java服务。
58.在本实施例中,该反编译模块,用于对与java服务对应的原class类文件进行在线反编译,获得源码,从而利用arthas的在线反编译技术。具体包括:根据接收到的linux命令jad
‑‑
source-only需要反编译的class类文件路径》反编译后的输出路径,对与java服务对
应的需要反编译的class类文件路径下的class类文件进行在线反编译,获得源码,并输出至反编译后的输出路径中。
59.在本实施例中,该修改模块,用于在线修改源码添加日志。具体包括:在线调用外部工具修改源码,并添加日志到问题点,从而利用arthas的在线编辑技术。
60.在本实施例中,该编译模块,用于对修改后的源码进行编译,获得修改后的class类文件。具体包括:对修改后的源码进行编译,获得修改后的class类文件,根据接收到的linux命令mc反编译后的输出路径-d class文件输出路经,将反编译后的输出路径下的修改后的class类文件输出至文件输出路经中。
61.在本实施例中,该替换模块,用于将修改后的class类文件替换掉原class类文件。具体包括:根据输入的linux命令redefine class文件输出路经,将文件输出路经下的修改后的class类文件替换掉原class类文件。
62.在一些实施例中,本系统还包括重新运行模块,用于重新运行java程序。当出现问题时,重新执行服务获取模块、反编译模块、修改模块、编译模块和替换模块。
63.本发明还公开了一种计算机可读介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述任一项的基于arthas的线上dubug方法,在此不再赘述。
64.通过实施本发明,具有以下有益效果:
65.当java程序运行错误时,本发明可启动arthas,获取需要监控的java服务,利用arthas的在线反编译技术对与java服务对应的原class类文件进行在线反编译,获得源码,并利用arthas的在线编辑技术在线修改源码添加日志,然后对修改后的源码进行编译,获得修改后的class类文件,最后将修改后的class类文件替换掉原class类文件,从而实现无需重新发包即可添加日志代码进行debug的方法,可大大提高排查线上问题的效率。
66.可以理解的,以上实施例仅表达了本发明的优选实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制;应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,可以对上述技术特点进行自由组合,还可以做出若干变形和改进,这些都属于本发明的保护范围;因此,凡跟本发明权利要求范围所做的等同变换与修饰,均应属于本发明权利要求的涵盖范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献