你还在为加一条 debug 日志就要重发应用而烦恼吗?
Arthas 是 Alibaba 开源的 Java 诊断工具。
安装启动
登录对应服务器执行(不建议在线上机器使用,会有性能问题)
wget https://alibaba.github.io/arthas/arthas-boot.jar && java -Dfile.encoding=UTF-8 -jar arthas-boot.jar
命令 demo
查看方法返回结果
## 查看 MorecControlFlow 类的 process 方法返回结果
## process 方法第一个参数的 momoId 属性值为 “668071814” 才生效
watch com.immomo.recommendation.MorecControlFlow process 'returnObj' 'params[0].momoId=="668071814"'
# ts=2019-03-18 21:09:46; [cost=264.434972ms] result=@Boolean[true]
## 查看 IMorecShuffler 类的 shuffle 抛的异常
## process 方法第一个参数的 momoId 属性值为 “668071814” 才生效
watch com.immomo.recommendation.plugins.shuffler.IMorecShuffler shuffle 'throwExp' 'params[0].morecRequest.momoId=="668071814"'
# ts=2019-03-27 20:54:29; [cost=46.642339ms] result=java.lang.IndexOutOfBoundsException: Index: 12, Size: 11
at java.util.ArrayList.rangeCheckForAdd(ArrayList.java:665)
at java.util.ArrayList.add(ArrayList.java:477)
at com.immomo.nearby.feed.recommend.moa.plugin.loader.young_verson.RoomUtil.rateFixMixRoomData(RoomUtil.java:235)
at com.immomo.nearby.feed.recommend.moa.plugin.shuffler.EsNearbyPlayMixRoomShuffler.shuffle(EsNearbyPlayMixRoomShuffler.java:187)
at com.immomo.nearby.feed.recommend.moa.plugin.shuffler.EsNearbyPlayMixRoomShuffler.shuffle(EsNearbyPlayMixRoomShuffler.java:45)
参考链接
Arthas watch 命令 https://alibaba.github.io/arthas/watch.html