import{_ as c,o as i,c as r,a as s,b as a,w as p,e as n,d as e,r as l}from"./app.6c27e557.js";const d={},u=s("h1",{id:"tt",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#tt","aria-hidden":"true"},"#"),n(" tt")],-1),m={href:"https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn&id=command-tt",target:"_blank",rel:"noopener noreferrer"},b=s("code",null,"tt",-1),k=n("\u5728\u7EBF\u6559\u7A0B"),v=e('
\u63D0\u793A
\u65B9\u6CD5\u6267\u884C\u6570\u636E\u7684\u65F6\u7A7A\u96A7\u9053\uFF0C\u8BB0\u5F55\u4E0B\u6307\u5B9A\u65B9\u6CD5\u6BCF\u6B21\u8C03\u7528\u7684\u5165\u53C2\u548C\u8FD4\u56DE\u4FE1\u606F\uFF0C\u5E76\u80FD\u5BF9\u8FD9\u4E9B\u4E0D\u540C\u7684\u65F6\u95F4\u4E0B\u8C03\u7528\u8FDB\u884C\u89C2\u6D4B
watch
\u867D\u7136\u5F88\u65B9\u4FBF\u548C\u7075\u6D3B\uFF0C\u4F46\u9700\u8981\u63D0\u524D\u60F3\u6E05\u695A\u89C2\u5BDF\u8868\u8FBE\u5F0F\u7684\u62FC\u5199\uFF0C\u8FD9\u5BF9\u6392\u67E5\u95EE\u9898\u800C\u8A00\u8981\u6C42\u592A\u9AD8\uFF0C\u56E0\u4E3A\u5F88\u591A\u65F6\u5019\u6211\u4EEC\u5E76\u4E0D\u6E05\u695A\u95EE\u9898\u51FA\u81EA\u4E8E\u4F55\u65B9\uFF0C\u53EA\u80FD\u9760\u86DB\u4E1D\u9A6C\u8FF9\u8FDB\u884C\u731C\u6D4B\u3002
\u8FD9\u4E2A\u65F6\u5019\u5982\u679C\u80FD\u8BB0\u5F55\u4E0B\u5F53\u65F6\u65B9\u6CD5\u8C03\u7528\u7684\u6240\u6709\u5165\u53C2\u548C\u8FD4\u56DE\u503C\u3001\u629B\u51FA\u7684\u5F02\u5E38\u4F1A\u5BF9\u6574\u4E2A\u95EE\u9898\u7684\u601D\u8003\u4E0E\u5224\u65AD\u975E\u5E38\u6709\u5E2E\u52A9\u3002
\u4E8E\u662F\u4E4E\uFF0CTimeTunnel \u547D\u4EE4\u5C31\u8BDE\u751F\u4E86\u3002
\u5BF9\u4E8E\u4E00\u4E2A\u6700\u57FA\u672C\u7684\u4F7F\u7528\u6765\u8BF4\uFF0C\u5C31\u662F\u8BB0\u5F55\u4E0B\u5F53\u524D\u65B9\u6CD5\u7684\u6BCF\u6B21\u8C03\u7528\u73AF\u5883\u73B0\u573A\u3002
$ tt -t demo.MathGame primeFactors
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 66 ms.
INDEX TIMESTAMP COST(ms) IS-RET IS-EXP OBJECT CLASS METHOD
-------------------------------------------------------------------------------------------------------------------------------------
1000 2018-12-04 11:15:38 1.096236 false true 0x4b67cf4d MathGame primeFactors
1001 2018-12-04 11:15:39 0.191848 false true 0x4b67cf4d MathGame primeFactors
1002 2018-12-04 11:15:40 0.069523 false true 0x4b67cf4d MathGame primeFactors
1003 2018-12-04 11:15:41 0.186073 false true 0x4b67cf4d MathGame primeFactors
1004 2018-12-04 11:15:42 17.76437 true false 0x4b67cf4d MathGame primeFactors
$ tt -t -m 1 demo.MathGame primeFactors
Press Q or Ctrl+C to abort.
Affect(class count:1 , method count:1) cost in 130 ms, listenerId: 1.
INDEX TIMESTAMP COST(ms) IS-RET IS-EXP OBJECT CLASS METHOD
-------------------------------------------------------------------------------------------------------------------------------------
1000 2022-12-25 19:41:45 2.629929 true false 0x3bf400 MathGame primeFactors
1001 2022-12-25 19:41:55 0.146161 false true 0x3bf400 MathGame primeFactors
\u547D\u4EE4\u53C2\u6570\u89E3\u6790
-t
tt \u547D\u4EE4\u6709\u5F88\u591A\u4E2A\u4E3B\u53C2\u6570\uFF0C-t
\u5C31\u662F\u5176\u4E2D\u4E4B\u4E00\u3002\u8FD9\u4E2A\u53C2\u6570\u7684\u8868\u660E\u5E0C\u671B\u8BB0\u5F55\u4E0B\u7C7B *Test
\u7684 print
\u65B9\u6CD5\u7684\u6BCF\u6B21\u6267\u884C\u60C5\u51B5\u3002
-n 3
\u5F53\u4F60\u6267\u884C\u4E00\u4E2A\u8C03\u7528\u91CF\u4E0D\u9AD8\u7684\u65B9\u6CD5\u65F6\u53EF\u80FD\u4F60\u8FD8\u80FD\u6709\u8DB3\u591F\u7684\u65F6\u95F4\u7528 CTRL+C
\u4E2D\u65AD tt \u547D\u4EE4\u8BB0\u5F55\u7684\u8FC7\u7A0B\uFF0C\u4F46\u5982\u679C\u9047\u5230\u8C03\u7528\u91CF\u975E\u5E38\u5927\u7684\u65B9\u6CD5\uFF0C\u77AC\u95F4\u5C31\u80FD\u5C06\u4F60\u7684 JVM \u5185\u5B58\u6491\u7206\u3002
\u6B64\u65F6\u4F60\u53EF\u4EE5\u901A\u8FC7 -n
\u53C2\u6570\u6307\u5B9A\u4F60\u9700\u8981\u8BB0\u5F55\u7684\u6B21\u6570\uFF0C\u5F53\u8FBE\u5230\u8BB0\u5F55\u6B21\u6570\u65F6 Arthas \u4F1A\u4E3B\u52A8\u4E2D\u65AD tt \u547D\u4EE4\u7684\u8BB0\u5F55\u8FC7\u7A0B\uFF0C\u907F\u514D\u4EBA\u5DE5\u64CD\u4F5C\u65E0\u6CD5\u505C\u6B62\u7684\u60C5\u51B5\u3002
-m 1
\u901A\u8FC7 -m
\u53C2\u6570\u6307\u5B9A Class \u5339\u914D\u7684\u6700\u5927\u6570\u91CF\uFF0C\u9632\u6B62\u5339\u914D\u5230\u7684 Class \u6570\u91CF\u592A\u591A\u5BFC\u81F4 JVM \u6302\u8D77\uFF0C\u9ED8\u8BA4\u503C\u662F 50\u3002
\u8868\u683C\u5B57\u6BB5\u8BF4\u660E
\u8868\u683C\u5B57\u6BB5 | \u5B57\u6BB5\u89E3\u91CA |
---|---|
INDEX | \u65F6\u95F4\u7247\u6BB5\u8BB0\u5F55\u7F16\u53F7\uFF0C\u6BCF\u4E00\u4E2A\u7F16\u53F7\u4EE3\u8868\u7740\u4E00\u6B21\u8C03\u7528\uFF0C\u540E\u7EED tt \u8FD8\u6709\u5F88\u591A\u547D\u4EE4\u90FD\u662F\u57FA\u4E8E\u6B64\u7F16\u53F7\u6307\u5B9A\u8BB0\u5F55\u64CD\u4F5C\uFF0C\u975E\u5E38\u91CD\u8981\u3002 |
TIMESTAMP | \u65B9\u6CD5\u6267\u884C\u7684\u672C\u673A\u65F6\u95F4\uFF0C\u8BB0\u5F55\u4E86\u8FD9\u4E2A\u65F6\u95F4\u7247\u6BB5\u6240\u53D1\u751F\u7684\u672C\u673A\u65F6\u95F4 |
COST(ms) | \u65B9\u6CD5\u6267\u884C\u7684\u8017\u65F6 |
IS-RET | \u65B9\u6CD5\u662F\u5426\u4EE5\u6B63\u5E38\u8FD4\u56DE\u7684\u5F62\u5F0F\u7ED3\u675F |
IS-EXP | \u65B9\u6CD5\u662F\u5426\u4EE5\u629B\u5F02\u5E38\u7684\u5F62\u5F0F\u7ED3\u675F |
OBJECT | \u6267\u884C\u5BF9\u8C61\u7684hashCode() \uFF0C\u6CE8\u610F\uFF0C\u66FE\u7ECF\u6709\u4EBA\u8BEF\u8BA4\u4E3A\u662F\u5BF9\u8C61\u5728 JVM \u4E2D\u7684\u5185\u5B58\u5730\u5740\uFF0C\u4F46\u5F88\u9057\u61BE\u4ED6\u4E0D\u662F\u3002\u4F46\u4ED6\u80FD\u5E2E\u52A9\u4F60\u7B80\u5355\u7684\u6807\u8BB0\u5F53\u524D\u6267\u884C\u65B9\u6CD5\u7684\u7C7B\u5B9E\u4F53 |
CLASS | \u6267\u884C\u7684\u7C7B\u540D |
METHOD | \u6267\u884C\u7684\u65B9\u6CD5\u540D |
\u6761\u4EF6\u8868\u8FBE\u5F0F
\u4E0D\u77E5\u9053\u5927\u5BB6\u662F\u5426\u6709\u5728\u4F7F\u7528\u8FC7\u7A0B\u4E2D\u9047\u5230\u4EE5\u4E0B\u56F0\u60D1
\u6761\u4EF6\u8868\u8FBE\u5F0F\u4E5F\u662F\u7528 \bOGNL
\u6765\u7F16\u5199\uFF0C\u6838\u5FC3\u7684\u5224\u65AD\u5BF9\u8C61\u4F9D\u7136\u662F Advice
\u5BF9\u8C61\u3002\u9664\u4E86 tt
\u547D\u4EE4\u4E4B\u5916\uFF0Cwatch
\u3001trace
\u3001stack
\u547D\u4EE4\u4E5F\u90FD\u652F\u6301\u6761\u4EF6\u8868\u8FBE\u5F0F\u3002
\u89E3\u51B3\u65B9\u6CD5\u91CD\u8F7D
tt -t *Test print params.length==1
\u901A\u8FC7\u5236\u5B9A\u53C2\u6570\u4E2A\u6570\u7684\u5F62\u5F0F\u89E3\u51B3\u4E0D\u540C\u7684\u65B9\u6CD5\u7B7E\u540D\uFF0C\u5982\u679C\u53C2\u6570\u4E2A\u6570\u4E00\u6837\uFF0C\u4F60\u8FD8\u53EF\u4EE5\u8FD9\u6837\u5199
tt -t *Test print 'params[1] instanceof Integer'
\u89E3\u51B3\u6307\u5B9A\u53C2\u6570
tt -t *Test print params[0].mobile=="13989838402"
\u5F53\u4F60\u7528 tt
\u8BB0\u5F55\u4E86\u4E00\u5927\u7247\u7684\u65F6\u95F4\u7247\u6BB5\u4E4B\u540E\uFF0C\u4F60\u5E0C\u671B\u80FD\u4ECE\u4E2D\u7B5B\u9009\u51FA\u81EA\u5DF1\u9700\u8981\u7684\u65F6\u95F4\u7247\u6BB5\uFF0C\u8FD9\u4E2A\u65F6\u5019\u4F60\u5C31\u9700\u8981\u5BF9\u73B0\u6709\u8BB0\u5F55\u8FDB\u884C\u68C0\u7D22\u3002
\u5047\u8BBE\u6211\u4EEC\u6709\u8FD9\u4E9B\u8BB0\u5F55
$ tt -l
INDEX TIMESTAMP COST(ms) IS-RET IS-EXP OBJECT CLASS METHOD
-------------------------------------------------------------------------------------------------------------------------------------
1000 2018-12-04 11:15:38 1.096236 false true 0x4b67cf4d MathGame primeFactors
1001 2018-12-04 11:15:39 0.191848 false true 0x4b67cf4d MathGame primeFactors
1002 2018-12-04 11:15:40 0.069523 false true 0x4b67cf4d MathGame primeFactors
1003 2018-12-04 11:15:41 0.186073 false true 0x4b67cf4d MathGame primeFactors
1004 2018-12-04 11:15:42 17.76437 true false 0x4b67cf4d MathGame primeFactors
9
1005 2018-12-04 11:15:43 0.4776 false true 0x4b67cf4d MathGame primeFactors
Affect(row-cnt:6) cost in 4 ms.
\u6211\u9700\u8981\u7B5B\u9009\u51FA primeFactors
\u65B9\u6CD5\u7684\u8C03\u7528\u4FE1\u606F
$ tt -s 'method.name=="primeFactors"'
INDEX TIMESTAMP COST(ms) IS-RET IS-EXP OBJECT CLASS METHOD
-------------------------------------------------------------------------------------------------------------------------------------
1000 2018-12-04 11:15:38 1.096236 false true 0x4b67cf4d MathGame primeFactors
1001 2018-12-04 11:15:39 0.191848 false true 0x4b67cf4d MathGame primeFactors
1002 2018-12-04 11:15:40 0.069523 false true 0x4b67cf4d MathGame primeFactors
1003 2018-12-04 11:15:41 0.186073 false true 0x4b67cf4d MathGame primeFactors
1004 2018-12-04 11:15:42 17.76437 true false 0x4b67cf4d MathGame primeFactors
9
1005 2018-12-04 11:15:43 0.4776 false true 0x4b67cf4d MathGame primeFactors
Affect(row-cnt:6) cost in 607 ms.
\u4F60\u9700\u8981\u4E00\u4E2A -s
\u53C2\u6570\u3002\u540C\u6837\u7684\uFF0C\u641C\u7D22\u8868\u8FBE\u5F0F\u7684\u6838\u5FC3\u5BF9\u8C61\u4F9D\u65E7\u662F Advice
\u5BF9\u8C61\u3002
\u5BF9\u4E8E\u5177\u4F53\u4E00\u4E2A\u65F6\u95F4\u7247\u7684\u4FE1\u606F\u800C\u8A00\uFF0C\u4F60\u53EF\u4EE5\u901A\u8FC7 -i
\u53C2\u6570\u540E\u8FB9\u8DDF\u7740\u5BF9\u5E94\u7684 INDEX
\u7F16\u53F7\u67E5\u770B\u5230\u4ED6\u7684\u8BE6\u7EC6\u4FE1\u606F\u3002
$ tt -i 1003
INDEX 1003
GMT-CREATE 2018-12-04 11:15:41
COST(ms) 0.186073
OBJECT 0x4b67cf4d
CLASS demo.MathGame
METHOD primeFactors
IS-RETURN false
IS-EXCEPTION true
PARAMETERS[0] @Integer[-564322413]
THROW-EXCEPTION java.lang.IllegalArgumentException: number is: -564322413, need >= 2
at demo.MathGame.primeFactors(MathGame.java:46)
at demo.MathGame.run(MathGame.java:24)
at demo.MathGame.main(MathGame.java:16)
Affect(row-cnt:1) cost in 11 ms.
\u5F53\u4F60\u7A0D\u7A0D\u505A\u4E86\u4E00\u4E9B\u8C03\u6574\u4E4B\u540E\uFF0C\u4F60\u53EF\u80FD\u9700\u8981\u524D\u7AEF\u7CFB\u7EDF\u91CD\u65B0\u89E6\u53D1\u4E00\u6B21\u4F60\u7684\u8C03\u7528\uFF0C\u6B64\u65F6\u5F97\u6C42\u7237\u7237\u544A\u5976\u5976\u7684\u9700\u8981\u524D\u7AEF\u914D\u5408\u8054\u8C03\u7684\u540C\u5B66\u518D\u6B21\u53D1\u8D77\u4E00\u6B21\u8C03\u7528\u3002\u800C\u6709\u4E9B\u573A\u666F\u4E0B\uFF0C\u8FD9\u4E2A\u8C03\u7528\u4E0D\u662F\u8FD9\u4E48\u597D\u89E6\u53D1\u7684\u3002
tt
\u547D\u4EE4\u7531\u4E8E\u4FDD\u5B58\u4E86\u5F53\u65F6\u8C03\u7528\u7684\u6240\u6709\u73B0\u573A\u4FE1\u606F\uFF0C\u6240\u4EE5\u6211\u4EEC\u53EF\u4EE5\u81EA\u5DF1\u4E3B\u52A8\u5BF9\u4E00\u4E2A INDEX
\u7F16\u53F7\u7684\u65F6\u95F4\u7247\u81EA\u4E3B\u53D1\u8D77\u4E00\u6B21\u8C03\u7528\uFF0C\u4ECE\u800C\u89E3\u653E\u4F60\u7684\u6C9F\u901A\u6210\u672C\u3002\u6B64\u65F6\u4F60\u9700\u8981 -p
\u53C2\u6570\u3002\u901A\u8FC7 --replay-times
\u6307\u5B9A \u8C03\u7528\u6B21\u6570\uFF0C\u901A\u8FC7 --replay-interval
\u6307\u5B9A\u591A\u6B21\u8C03\u7528\u95F4\u9694(\u5355\u4F4D ms, \u9ED8\u8BA4 1000ms)
$ tt -i 1004 -p
RE-INDEX 1004
GMT-REPLAY 2018-12-04 11:26:00
OBJECT 0x4b67cf4d
CLASS demo.MathGame
METHOD primeFactors
PARAMETERS[0] @Integer[946738738]
IS-RETURN true
IS-EXCEPTION false
COST(ms) 0.186073
RETURN-OBJ @ArrayList[
@Integer[2],
@Integer[11],
@Integer[17],
@Integer[2531387],
]
Time fragment[1004] successfully replayed.
Affect(row-cnt:1) cost in 14 ms.
\u4F60\u4F1A\u53D1\u73B0\u7ED3\u679C\u867D\u7136\u4E00\u6837\uFF0C\u4F46\u8C03\u7528\u7684\u8DEF\u5F84\u53D1\u751F\u4E86\u53D8\u5316\uFF0C\u7531\u539F\u6765\u7684\u7A0B\u5E8F\u53D1\u8D77\u53D8\u6210\u4E86 Arthas \u81EA\u5DF1\u7684\u5185\u90E8\u7EBF\u7A0B\u53D1\u8D77\u7684\u8C03\u7528\u4E86\u3002
-w, --watch-express
\u89C2\u5BDF\u65F6\u7A7A\u96A7\u9053\u4F7F\u7528ognl
\u8868\u8FBE\u5F0F
[arthas@10718]$ tt -t demo.MathGame run -n 5
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 56 ms, listenerId: 1
INDEX TIMESTAMP COST(ms) IS-RET IS-EXP OBJECT CLASS METHOD
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1000 2021-01-08 21:54:17 0.901091 true false 0x7699a589 MathGame run
[arthas@10718]$ tt -w 'target.illegalArgumentCount' -x 1 -i 1000
@Integer[60]
Affect(row-cnt:1) cost in 7 ms.
[arthas@10718]$ tt -t demo.MathGame run -n 5
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 56 ms, listenerId: 1
INDEX TIMESTAMP COST(ms) IS-RET IS-EXP OBJECT CLASS METHOD
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1000 2021-01-08 21:54:17 0.901091 true false 0x7699a589 MathGame run
[arthas@10718]$ tt -w '@demo.MathGame@random.nextInt(100)' -x 1 -i 1000
@Integer[46]
\u9700\u8981\u5F3A\u8C03\u7684\u70B9
ThreadLocal \u4FE1\u606F\u4E22\u5931
\u5F88\u591A\u6846\u67B6\u5077\u5077\u7684\u5C06\u4E00\u4E9B\u73AF\u5883\u53D8\u91CF\u4FE1\u606F\u585E\u5230\u4E86\u53D1\u8D77\u8C03\u7528\u7EBF\u7A0B\u7684 ThreadLocal \u4E2D\uFF0C\u7531\u4E8E\u8C03\u7528\u7EBF\u7A0B\u53D1\u751F\u4E86\u53D8\u5316\uFF0C\u8FD9\u4E9B ThreadLocal \u7EBF\u7A0B\u4FE1\u606F\u65E0\u6CD5\u901A\u8FC7 Arthas \u4FDD\u5B58\uFF0C\u6240\u4EE5\u8FD9\u4E9B\u4FE1\u606F\u5C06\u4F1A\u4E22\u5931\u3002
\u4E00\u4E9B\u5E38\u89C1\u7684 CASE \u6BD4\u5982\uFF1A\u9E70\u773C\u7684 TraceId \u7B49\u3002
\u5F15\u7528\u7684\u5BF9\u8C61
\u9700\u8981\u5F3A\u8C03\u7684\u662F\uFF0Ctt
\u547D\u4EE4\u662F\u5C06\u5F53\u524D\u73AF\u5883\u7684\u5BF9\u8C61\u5F15\u7528\u4FDD\u5B58\u8D77\u6765\uFF0C\u4F46\u4EC5\u4EC5\u4E5F\u53EA\u80FD\u4FDD\u5B58\u4E00\u4E2A\u5F15\u7528\u800C\u5DF2\u3002\u5982\u679C\u65B9\u6CD5\u5185\u90E8\u5BF9\u5165\u53C2\u8FDB\u884C\u4E86\u53D8\u66F4\uFF0C\u6216\u8005\u8FD4\u56DE\u7684\u5BF9\u8C61\u7ECF\u8FC7\u4E86\u540E\u7EED\u7684\u5904\u7406\uFF0C\u90A3\u4E48\u5728 tt
\u67E5\u770B\u7684\u65F6\u5019\u5C06\u65E0\u6CD5\u770B\u5230\u5F53\u65F6\u6700\u51C6\u786E\u7684\u503C\u3002\u8FD9\u4E5F\u662F\u4E3A\u4EC0\u4E48 watch
\u547D\u4EE4\u5B58\u5728\u7684\u610F\u4E49\u3002