基于arthas的线上dubug方法、系统及计算机可读介质技术方案

技术编号:33810516 阅读:9 留言:0更新日期:2022-06-16 10:20
本发明专利技术公开了基于arthas的线上dubug方法、系统及计算机可读介质,当java程序运行错误时,可启动arthas,获取需要监控的java服务,利用arthas的在线反编译技术对与java服务对应的原class类文件进行在线反编译,获得源码,并利用arthas的在线编辑技术在线修改源码添加日志,然后对修改后的源码进行编译,获得修改后的class类文件,最后将修改后的class类文件替换掉原class类文件,从而实现无需重新发包即可添加日志代码进行debug的方法,可大大提高排查线上问题的效率。提高排查线上问题的效率。提高排查线上问题的效率。

【技术实现步骤摘要】
基于arthas的线上dubug方法、系统及计算机可读介质


[0001]本专利技术涉及java线上服务实时调试
,尤其涉及一种基于arthas的线上dubug方法、系统及计算机可读介质。

技术介绍

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

技术实现思路

[0003]本专利技术要解决的技术问题在于,针对现有技术存在的至少一个缺陷,提供一种基于arthas的线上dubug方法、系统及计算机可读介质。
[0004]本专利技术解决其技术问题所采用的技术方案是:构造一种基于arthas的线上dubug方法,包括以下步骤:
[0005]S1:启动arthas,获取需要监控的java服务;
[0006]S2:对与所述java服务对应的原class类文件进行在线反编译,获得源码;
[0007]S3:在线修改所述源码添加日志;
[0008]S4:对修改后的源码进行编译,获得修改后的class类文件;
[0009]S5:将所述修改后的class类文件替换掉所述原class类文件。
[0010]优选地,在本专利技术所述的基于arthas的线上dubug方法中,步骤S1包括:
[0011]S11:下载arthas

jar包并运行;
[0012]S12:根据接收到的选择指令,获取需要监控的java服务。r/>[0013]优选地,在本专利技术所述的基于arthas的线上dubug方法中,步骤S11包括:
[0014]根据接收到的linux命令curl

O https://arthas.aliyun.com/arthas

boot.jar,下载arthas

jar包;
[0015]根据接收到的linux命令java

jar arthas

boot.jar,运行arthas并显示当前的java服务。
[0016]优选地,在本专利技术所述的基于arthas的线上dubug方法中,步骤S2包括:
[0017]根据接收到的linux命令jad
‑‑
source

only需要反编译的class类文件路径>反编译后的输出路径,对与所述java服务对应的需要反编译的class类文件路径下的class类文件进行在线反编译,获得源码,并输出至反编译后的输出路径中。
[0018]优选地,在本专利技术所述的基于arthas的线上dubug方法中,步骤S3包括:
[0019]在线调用外部工具修改所述源码,并添加日志到问题点。
[0020]优选地,在本专利技术所述的基于arthas的线上dubug方法中,步骤S4还包括:
[0021]根据接收到的linux命令mc反编译后的输出路径

d class文件输出路经,将反编译后的输出路径下的所述修改后的class类文件输出至文件输出路经中。
[0022]优选地,在本专利技术所述的基于arthas的线上dubug方法中,步骤S5包括:
[0023]根据输入的linux命令redefine class文件输出路经,将文件输出路经下的所述修改后的class类文件替换掉所述原class类文件。
[0024]本专利技术还构造了一种基于arthas的线上dubug系统,包括:
[0025]服务获取模块,用于启动arthas,获取需要监控的java服务;
[0026]反编译模块,用于对与所述java服务对应的原class类文件进行在线反编译,获得源码;
[0027]修改模块,用于在线修改所述源码添加日志;
[0028]编译模块,用于对修改后的源码进行编译,获得修改后的class类文件;
[0029]替换模块,用于将所述修改后的class类文件替换掉所述原class类文件。
[0030]优选地,在本专利技术所述的基于arthas的线上dubug系统中,所述反编译模块,进一步用于根据接收到的linux命令jad
‑‑
source

only需要反编译的class类文件路径>反编译后的输出路径,对与所述java服务对应的需要反编译的class类文件路径下的class类文件进行在线反编译,获得源码,并输出至反编译后的输出路径中。
[0031]本专利技术还构造了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的基于arthas的线上dubug方法。
[0032]通过实施本专利技术,具有以下有益效果:
[0033]当java程序运行错误时,本专利技术可启动arthas,获取需要监控的java服务,利用arthas的在线反编译技术对与java服务对应的原class类文件进行在线反编译,获得源码,并利用arthas的在线编辑技术在线修改源码添加日志,然后对修改后的源码进行编译,获得修改后的class类文件,最后将修改后的class类文件替换掉原class类文件,从而实现无需重新发包即可添加日志代码进行debug的方法,可大大提高排查线上问题的效率。
附图说明
[0034]下面将结合附图及实施例对本专利技术作进一步说明,附图中:
[0035]图1是本专利技术基于arthas的线上dubug方法流程示意图;
[0036]图2是本专利技术基于arthas的线上dubug系统模块框图。
具体实施方式
[0037]为了对本专利技术的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本专利技术的具体实施方式。
[0038]需要说明的是,附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
[0039]附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
[0040]如图1所示,本专利技术公开了一种基于arthas的线上dubug方法,适用于java程序,包括以下步骤:
[0041]步骤S1:启动arthas,获取需要监控的java服务。
[0042]具体地,步骤S1包括:
[0043]步骤S11:下载arthas

jar包并运行;
[0044]步骤S12:根据接收到的选择指令,获取需要监控的java服务。其中,该选择指令为用户输入的选择指令。
[0045]在一些本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于arthas的线上dubug方法,其特征在于,包括以下步骤:S1:启动arthas,获取需要监控的java服务;S2:对与所述java服务对应的原class类文件进行在线反编译,获得源码;S3:在线修改所述源码添加日志;S4:对修改后的源码进行编译,获得修改后的class类文件;S5:将所述修改后的class类文件替换掉所述原class类文件。2.根据权利要求1所述的基于arthas的线上dubug方法,其特征在于,步骤S1包括:S11:下载arthas

jar包并运行;S12:根据接收到的选择指令,获取需要监控的java服务。3.根据权利要求2所述的基于arthas的线上dubug方法,其特征在于,步骤S11包括:根据接收到的linux命令curl

O https://arthas.aliyun.com/arthas

boot.jar,下载arthas

jar包;根据接收到的linux命令java

jar arthas

boot.jar,运行arthas并显示当前的java服务。4.根据权利要求1所述的基于arthas的线上dubug方法,其特征在于,步骤S2包括:根据接收到的linux命令jad
‑‑
source

only需要反编译的class类文件路径>反编译后的输出路径,对与所述java服务对应的需要反编译的class类文件路径下的class类文件进行在线反编译,获得源码,并输出至反编译后的输出路径中。5.根据权利要求1所述的基于arthas的线上dubug方法,其特征在于,步骤S3包括...

【专利技术属性】
技术研发人员:钟鹏
申请(专利权)人:深圳市世强元件网络有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1