前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Arthas中trace和watch的区别

Arthas中trace和watch的区别

原创
作者头像
周辰晨
发布2024-05-21 17:48:22
5330
发布2024-05-21 17:48:22
举报
文章被收录于专栏:Java小册

trace 命令

trace 命令主要用于监控方法的调用链路以及性能开销。它可以帮助你了解一个方法被调用时,究竟调用了哪些方法,以及每个方法的执行时间。这对于排查性能问题非常有用。

使用场景

  • 想要知道某个方法调用了哪些其他方法。
  • 想要知道这些方法的执行时间,包括总时间、最大时间、最小时间等。

基本用法

代码语言:javascript
复制
trace <class-pattern> <method-pattern> [options]

例如:

代码语言:javascript
复制
trace com.example.MyClass myMethod

watch 命令

watch 命令则更侧重于观察方法的具体调用情况,包括方法的入参、返回值、抛出的异常等。它可以用来监控方法的执行数据,并且可以指定观察的表达式,从而获取你感兴趣的具体信息。

使用场景

  • 想要知道方法调用时的具体参数是什么。
  • 想要知道方法的返回值或者抛出的异常。
  • 想要在方法执行前后监控特定变量的值。

基本用法

代码语言:javascript
复制
watch <class-pattern> <method-pattern> <expression> [options]

例如:

代码语言:javascript
复制
watch com.example.MyClass myMethod '{params, returnObj}' 

trace 与 watch 的区别

  • 监控深度trace 用于监控方法调用的深度,包括调用了哪些方法以及每个方法的执行时间;而 watch 用于监控方法的具体执行细节,如参数、返回值等。
  • 用途trace 更适合于排查性能问题,通过观察方法的调用链路和耗时来定位可能的性能瓶颈;watch 更适合于排查逻辑问题,通过观察方法的执行状态来理解程序的行为。
  • 输出信息trace 输出的是方法调用的堆栈信息和时间消耗;watch 输出的是用户指定表达式的值,可以是参数、返回值、异常等。

在实际使用中,根据问题的具体情况选择合适的命令是非常重要的。有时候,两者也可以结合使用,比如先用 trace 定位到有问题的方法调用,然后再用 watch 来深入观察该方法的具体执行状态。

trace案例截图:

watch案例截图:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • trace 命令
  • watch 命令
  • trace 与 watch 的区别
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档