tt 命令的基本使用 | 学习笔记

简介: 快速学习 tt 命令的基本使用

开发者学堂课程【线上问题排查利器 Alibaba Arthas(下)tt 命令的基本使用】学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/747/detail/13206


tt 命令的基本使用


内容介绍

一.tt 命令的介绍

二.tt 命令使用案例


一.Tt 命令的介绍

(1)tt 含义:time-tunnel 时间隧道

穿越时空隧道,回到过去或到达未来。

(2)作用:记录下指定方法每次调用的入参和返回信息,并能对这些不同时间下调用的信息进行观测

(3)介绍:watch 虽然很方便和灵活,且用 watch 用的更多。但需要提前想清观测表达式的拼写,这对排查问题而言要求太高,因为很多时候并不清楚问题出自何方,只能靠蛛丝马迹进行猜测,且有时并不确定要靠哪个方法没办法写出表达式。

这时如果能记录下当时方法调用的所有入参和返回值,抛出的异常会对整个问题的思考与判断非常有帮助。于是,Timetunnel 命令就诞生了。

Timetunnel 较 watch 更详细,可以通过各种参数比较方便地查询。

调用时,检查所有的入参和返回,抛出的异常,然后再进行思考,于是就有了Timetunne时间通道。

(4)参数解析

Tt 参数         说明

-t              记录某个方法在一个时间段中的调用,这个时间段是它自己确定的,并没有设置它

-l              显示所有已经记录的列表

-n 次数              只记录多少次,如果不记录,就会一直记录下去,数值非常大。

-s 表达式        搜索表达式,记录出来的数据如果想在结果当中去查看一些信息,用-s 表达式

-i 索引号         查看指定索引号的详细调用信息

-p               重新调用指定的索引号时间碎片

输入-h,它会把所有参数写出来

输入-d,删除所有调用列表

-t

tt命令有很多个主参数,-t 是其中之一,这个参数表明希望记录下类Test的 print 方法的每次执行清况。

-n 3

当你执行一个调用量不高的方法时可能你还能有足够的时间用CTRL+C 中断 tt 命令记录的过程,但如果遇到调用量非常大的方法,瞬间就能将 JM 内存撑爆。

比时可以通过- n 参数指定你需要记录的次数,当达到记录次数时 Arthas 会主动中断 tt 命令的记录过程,避免人工操作无法停止的情况。


二.tt 命令使用案例

基本使用

  1. 最基本的使用来说,就是记录下当前方法的每次调用环境现场。
  2. Tt -t demo.MathGame primeFactors

输入[arthas@6523]$tt -t demo.MathGame primeFactors

再按回车,它开始记录,这个索引,它就是记录每次方法的调用环境的现场。

这里有众多参数,第一列是时间片段的编号,如果后面还要调动其它

tt 命令,它都是基于这个索引号的,而且编号是唯一的,不会重复。

如果挑第二次 tt 命令,从1012开始。

INOEX是编号,TIMESTAMP 是执行时间,记录了时间片段所发生

的时间,cost代表方法耗时多久,is-ret 方法是否是正常的形式返

回的,true 代表正常返回,false 代表抛异常,Is-ESP 代表是否抛

出异常,OBJECT 代表对象 hashCode,CLASS 代表执行的类的名

称,METHOD 代表执行的方法名。

image.png

相关文章
|
6月前
|
SQL 安全 数据库
关于QUOTENAME的用法
关于QUOTENAME的用法
|
7月前
|
数据安全/隐私保护
关于DotNetZip的用法
关于DotNetZip的用法
78 0
while (n-- > 0) 的用法
while (n-- > 0) 的用法
/与%,%与/的用法
/与%,%与/的用法
175 0
$.each()的用法
$.each()的用法
247 0
|
存储 SQL Oracle
DatabaseMetaData的用法(转)
DatabaseMetaData的用法(转)
600 0
${}用法
[el表达式],它会从page,request,session,application中取值。比如:{name}它的意思就从以上4个对象中去名为name的值。
1370 0
|
Java
Systrace的用法小结
通过SysTrace可以帮助我们分析性能问题,包含方法的耗时时长、CPU的使用情况、ANR、布局情况等;相比性能工具TraceView,主要用来分析每个方法的执行时间,对于冷启动而言,想抓trace只能通过代码的方式,这样会导致整个应用比较卡顿,测试出的方法时间,不是真正的执行时间,只能看下时间长短的相对占比。
3505 0