萱草|又一款Java调试神器

你有没有遇到这种问题 , 在线下写得代码自信满满 , 肯定不会再出什么幺蛾子了~然而 , 一上线 , 就GG , 要调试起来太麻烦 , 烦的一比 。
【萱草|又一款Java调试神器】其实现在这种情况比较少了 , 毕竟上线一点点代码 , 都需要经过几轮测试 , 提交上线报告 , 你写得那点代码才会上线 , 所以 , 要出现上面这种情况还是比较少 。 然而 , 生产环境一般出现的问题 , 没有一点硬功夫(经验)还真不那么容易分析出来 。 刚好阿里推出一款一款Java诊断工具——Arthas , 菜鸟也可以在线分析调试代码 , 找出病因~
萱草|又一款Java调试神器官网:
它主要解决的痛点:

  • 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  • 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  • 遇到问题无法在线上 debug , 难道只能通过加日志再重新发布吗?
  • 线上遇到某个用户的数据处理有问题 , 但线上同样无法 debug , 线下无法重现!
  • 是否有一个全局视角来查看系统的运行状况?
  • 有什么办法可以监控到JVM的实时运行状态?
  • 线上代码有错误 , 不想重新发布?那能不能改class文件替换一下?
看到它能解决这些问题 , 心里挺激动的 , 这不正是我们线上调试想要的吗^_^
# 支持环境
JDK 6+ , Linux/Mac/Windows , 采用命令行交互模式 , 同时提供丰富的 Tab 自动补全功能
# 安装
1、下载jar
默认推荐的安装方式 , 使用jar方式来启动
curl -O-jar arthas-boot.jar
萱草|又一款Java调试神器其实 , 我写本文时 , 用的是Windows操作系统 , 我直接下载的
萱草|又一款Java调试神器打印帮助信息
java -jar arthas-boot.jar -h
萱草|又一款Java调试神器重点说明:--target-ip 一定要是arthas所在机器对外暴露的ip , 默认是127.0.0.1 , 只能本地访问 。
2、在线安装
此方式只适应于 Linux/Unix/Mac 等平台 , 命令如下:
curl -L| sh启动arthas
./as.sh PID #进程id 指定JAVA进程id ./as.sh -h #h来获取更多参数信3、在docker中安装
#运行arthas-demodocker run --name arthas-demo -it hengyunabc/arthas:latest /bin/sh -c "java -jar /opt/arthas/arthas-demo.jar"#安装arthasdocker exec -it${containerId} /bin/bash -c "wgetpublic class ArthasAttachExample {public static void main(String[] args) {ArthasAgent.attach();}}# 远程连接
1、WebConsole
通过浏览器http访问8563端口 , 注意页面红色框内的IP也必须指定服务端的IP , 不能用默认的127.0.0.1 , 如下:
萱草|又一款Java调试神器2、telnet
说明一下 , Windows默认telnet客服端没有开启 , 需要你手动开启一下 。
萱草|又一款Java调试神器3、tunnel server方式


推荐阅读