学习arthas(十二)跟踪方法代码的执行

Arthas
placeholder image
admin 发布于:2023-10-02 10:18:39
阅读:loading

1.基本介绍

trace命令是Arthas工具中的一个强大的命令,用于跟踪方法的执行情况。它可以帮助开发人员进行代码调试、性能分析和问题排查,是一个动态方法追踪命令,提供了一种跟踪方法参数和返回值、异常情况等的方法。trace 能方便的帮助你定位和发现因 RT 高而导致的性能问题缺陷,但其每次只能跟踪一级方法的调用链路,对一个方法内部的调用路径进行追踪,输出方法路径上每个子方法的调用耗时细节。

通过使用arthas trace命令,可以灵活地跟踪指定类和方法的执行情况,并结合选项进行更精细的控制。这对于调试和性能分析非常有帮助。需要注意的是arthas trace命令会对目标方法进行字节码增强,因此在使用完毕后,建议使用retransform命令恢复字节码,以避免对应用程序的性能造成影响。

trace命令可以对方法内部调用路径,并输出方法路径上的每个节点上耗时。trace 命令能主动搜索 class-pattern/method-pattern 对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。

2.跟踪方法

@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;
}

(参考代码)

image.png

image.png

(跟踪结果)

3.其它说明

(1)匹配类和方法的路径都支持正则模糊匹配,同时类的路径支持“.”和“/”的混合匹配;

(2)匹配的方法可以用“*”代表全部,也可以用“|”分割多个方法;

(3)可以匹配一个接口的所有子类,同时排除某个特定的类;

(4)可以使用“skipJDKMethod”来忽略JDK内置方法的跟踪,毕竟JDK内置的方法都是杠杠的,也可以设置共统计方法执行的次数;

(5)可以增加条件表达式,watch/trace/monitor/stack/tt 命令都支持,条件表达式可以用参数、方法执行时间进行过滤;

(6)处于循环中的方法调用,count为循环的次数;

(7)参考帮助文档:

image.png


 点赞


 发表评论

当前回复:作者

 评论列表


留言区