学习arthas(十二)跟踪方法代码的执行
Arthasadmin 发布于:2023-10-02 10:18:39
阅读:loading
trace命令是Arthas工具中的一个强大的命令,用于跟踪方法的执行情况。它可以帮助开发人员进行代码调试、性能分析和问题排查,是一个动态方法追踪命令,提供了一种跟踪方法参数和返回值、异常情况等的方法。trace 能方便的帮助你定位和发现因 RT 高而导致的性能问题缺陷,但其每次只能跟踪一级方法的调用链路,对一个方法内部的调用路径进行追踪,输出方法路径上每个子方法的调用耗时细节。
通过使用arthas trace命令,可以灵活地跟踪指定类和方法的执行情况,并结合选项进行更精细的控制。这对于调试和性能分析非常有帮助。需要注意的是arthas trace命令会对目标方法进行字节码增强,因此在使用完毕后,建议使用retransform命令恢复字节码,以避免对应用程序的性能造成影响。
trace命令可以对方法内部调用路径,并输出方法路径上的每个节点上耗时。trace 命令能主动搜索 class-pattern/method-pattern 对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。
@Override
@Cacheable(key = "'queryStrongTagsList'" , cacheNames = CacheNameConstant.NOT_EXPIRED)
public List<TagManageResult> queryStrongTagsList() {
Page<Object> page = new Page<>(1 , 100);
TagManageParam param = new TagManageParam();
param.setStrong(EnumWhether.yes);
Page<TagManageResult> tagManageResultPage = this.tagManageMapper.queryTagManagePage(page, param);
List<TagManageResult> dataList = tagManageResultPage.getRecords();
for (TagManageResult result : dataList) {
String color = RandomUtil.getRandomColor();
String fontSize = RandomUtil.getRandomFontSize();
String style = String.format("color:%s;font-size:%s;" , color , fontSize);
result.setStyle(style);
}
return dataList;
}
(参考代码)
(跟踪结果)
(1)匹配类和方法的路径都支持正则模糊匹配,同时类的路径支持“.”和“/”的混合匹配;
(2)匹配的方法可以用“*”代表全部,也可以用“|”分割多个方法;
(3)可以匹配一个接口的所有子类,同时排除某个特定的类;
(4)可以使用“skipJDKMethod”来忽略JDK内置方法的跟踪,毕竟JDK内置的方法都是杠杠的,也可以设置共统计方法执行的次数;
(5)可以增加条件表达式,watch/trace/monitor/stack/tt 命令都支持,条件表达式可以用参数、方法执行时间进行过滤;
(6)处于循环中的方法调用,count为循环的次数;
(7)参考帮助文档:
点赞
发表评论
评论列表
留言区
- 开篇学习arthas啦
- 学习arthas(一)安装与入门介绍
- 学习arthas(二)Web Console控制台
- 学习arthas(三)命令大全与简单命令
- 学习arthas(四)系统命令
- 学习arthas(五)类命令
- 学习arthas(六)增强命令
- 学习arthas(七)arthas-tunnel-server的摸索
- 学习arthas(八)查找某个被加载的类
- 学习arthas(九)动态执行一些代码
- 学习arthas(十)方法执行结果监控
- 学习arthas(十一)输出方法调用栈
- 学习arthas(十三)监视代码的执行结果
- 学习arthas(十四)方法执行时的时空隧道
- 学习arthas(十五)无侵入的热部署
- 学习arthas(十六)热点功能火焰图