diff --git a/core/src/main/java/com/taobao/arthas/core/command/monitor200/TraceCommand.java b/core/src/main/java/com/taobao/arthas/core/command/monitor200/TraceCommand.java index eb59fc209..e18b76fe7 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/monitor200/TraceCommand.java +++ b/core/src/main/java/com/taobao/arthas/core/command/monitor200/TraceCommand.java @@ -36,6 +36,7 @@ import java.util.List; " trace -E org\\\\.apache\\\\.commons\\\\.lang\\\\.StringUtils isBlank\n" + " trace -E com.test.ClassA|org.test.ClassB method1|method2|method3\n" + " trace demo.MathGame run -n 5\n" + + " trace demo.MathGame run --skipJDKMethod false\n" + Constants.WIKI + Constants.WIKI_HOME + "trace") //@formatter:on public class TraceCommand extends EnhancerCommand { diff --git a/site/src/site/sphinx/en/trace.md b/site/src/site/sphinx/en/trace.md index fdf925341..cd0910999 100644 --- a/site/src/site/sphinx/en/trace.md +++ b/site/src/site/sphinx/en/trace.md @@ -43,13 +43,15 @@ Start `arthas-demo` in [Quick Start](quick-start.md). ```bash $ trace demo.MathGame run -Press Ctrl+C to abort. -Affect(class-cnt:1 , method-cnt:1) cost in 42 ms. -`---ts=2018-12-04 00:44:17;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 - `---[10.611029ms] demo.MathGame:run() - +---[0.05638ms] java.util.Random:nextInt() - +---[10.036885ms] demo.MathGame:primeFactors() - `---[0.170316ms] demo.MathGame:print() +Press Q or Ctrl+C to abort. +Affect(class-cnt:1 , method-cnt:1) cost in 28 ms. +`---ts=2019-12-04 00:45:08;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 + `---[0.617465ms] demo.MathGame:run() + `---[0.078946ms] demo.MathGame:primeFactors() #24 [throws Exception] + +`---ts=2019-12-04 00:45:09;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 + `---[1.276874ms] demo.MathGame:run() + `---[0.03752ms] demo.MathGame:primeFactors() #24 [throws Exception] ``` @@ -60,36 +62,48 @@ If the method invoked many times, use `-n` options to specify trace times. For e ```bash $ trace demo.MathGame run -n 1 Press Q or Ctrl+C to abort. -Affect(class-cnt:1 , method-cnt:1) cost in 35 ms. -`---ts=2019-11-28 15:54:28;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 - `---[0.866311ms] demo.MathGame:run() - +---[0.044001ms] java.util.Random:nextInt() #23 - +---[0.069037ms] demo.MathGame:primeFactors() #24 [throws Exception] - +---[0.003227ms] java.lang.StringBuilder:() #28 - +---[0.006155ms] java.lang.Integer:valueOf() #28 - +---[0.071335ms] java.lang.String:format() #28 - +---[min=0.002142ms,max=0.002237ms,total=0.004379ms,count=2] java.lang.StringBuilder:append() #28 - +---[0.011072ms] java.lang.Exception:getMessage() #28 - +---[0.006048ms] java.lang.StringBuilder:toString() #28 - `---[0.084138ms] java.io.PrintStream:println() #28 +Affect(class-cnt:1 , method-cnt:1) cost in 20 ms. +`---ts=2019-12-04 00:45:53;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 + `---[0.549379ms] demo.MathGame:run() + +---[0.059839ms] demo.MathGame:primeFactors() #24 + `---[0.232887ms] demo.MathGame:print() #25 Command execution times exceed limit: 1, so command will exit. You can set it with -n option. ``` -#### Ignore jdk method +#### Include jdk method + +* `--skipJDKMethod ` skip jdk method trace, default value true. ```bash -$ trace -j demo.MathGame run -Press Ctrl+C to abort. -Affect(class-cnt:1 , method-cnt:1) cost in 31 ms. -`---ts=2018-12-04 01:09:14;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 - `---[5.190646ms] demo.MathGame:run() - +---[4.465779ms] demo.MathGame:primeFactors() - `---[0.375324ms] demo.MathGame:print() +$ trace --skipJDKMethod false demo.MathGame run +Press Q or Ctrl+C to abort. +Affect(class-cnt:1 , method-cnt:1) cost in 60 ms. +`---ts=2019-12-04 00:44:41;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 + `---[1.357742ms] demo.MathGame:run() + +---[0.028624ms] java.util.Random:nextInt() #23 + +---[0.045534ms] demo.MathGame:primeFactors() #24 [throws Exception] + +---[0.005372ms] java.lang.StringBuilder:() #28 + +---[0.012257ms] java.lang.Integer:valueOf() #28 + +---[0.234537ms] java.lang.String:format() #28 + +---[min=0.004539ms,max=0.005778ms,total=0.010317ms,count=2] java.lang.StringBuilder:append() #28 + +---[0.013777ms] java.lang.Exception:getMessage() #28 + +---[0.004935ms] java.lang.StringBuilder:toString() #28 + `---[0.06941ms] java.io.PrintStream:println() #28 + +`---ts=2019-12-04 00:44:42;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 + `---[3.030432ms] demo.MathGame:run() + +---[0.010473ms] java.util.Random:nextInt() #23 + +---[0.023715ms] demo.MathGame:primeFactors() #24 [throws Exception] + +---[0.005198ms] java.lang.StringBuilder:() #28 + +---[0.006405ms] java.lang.Integer:valueOf() #28 + +---[0.178583ms] java.lang.String:format() #28 + +---[min=0.011636ms,max=0.838077ms,total=0.849713ms,count=2] java.lang.StringBuilder:append() #28 + +---[0.008747ms] java.lang.Exception:getMessage() #28 + +---[0.019768ms] java.lang.StringBuilder:toString() #28 + `---[0.076457ms] java.io.PrintStream:println() #28 ``` -* `-j`: jdkMethodSkip, skip jdk method trace - #### Filtering by cost ```bash diff --git a/site/src/site/sphinx/trace.md b/site/src/site/sphinx/trace.md index fae66bbcd..85661f097 100644 --- a/site/src/site/sphinx/trace.md +++ b/site/src/site/sphinx/trace.md @@ -45,13 +45,15 @@ trace ```bash $ trace demo.MathGame run -Press Ctrl+C to abort. -Affect(class-cnt:1 , method-cnt:1) cost in 42 ms. -`---ts=2018-12-04 00:44:17;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 - `---[10.611029ms] demo.MathGame:run() - +---[0.05638ms] java.util.Random:nextInt() - +---[10.036885ms] demo.MathGame:primeFactors() - `---[0.170316ms] demo.MathGame:print() +Press Q or Ctrl+C to abort. +Affect(class-cnt:1 , method-cnt:1) cost in 28 ms. +`---ts=2019-12-04 00:45:08;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 + `---[0.617465ms] demo.MathGame:run() + `---[0.078946ms] demo.MathGame:primeFactors() #24 [throws Exception] + +`---ts=2019-12-04 00:45:09;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 + `---[1.276874ms] demo.MathGame:run() + `---[0.03752ms] demo.MathGame:primeFactors() #24 [throws Exception] ``` #### trace次数限制 @@ -61,37 +63,51 @@ Affect(class-cnt:1 , method-cnt:1) cost in 42 ms. ```bash $ trace demo.MathGame run -n 1 Press Q or Ctrl+C to abort. -Affect(class-cnt:1 , method-cnt:1) cost in 35 ms. -`---ts=2019-11-28 15:54:28;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 - `---[0.866311ms] demo.MathGame:run() - +---[0.044001ms] java.util.Random:nextInt() #23 - +---[0.069037ms] demo.MathGame:primeFactors() #24 [throws Exception] - +---[0.003227ms] java.lang.StringBuilder:() #28 - +---[0.006155ms] java.lang.Integer:valueOf() #28 - +---[0.071335ms] java.lang.String:format() #28 - +---[min=0.002142ms,max=0.002237ms,total=0.004379ms,count=2] java.lang.StringBuilder:append() #28 - +---[0.011072ms] java.lang.Exception:getMessage() #28 - +---[0.006048ms] java.lang.StringBuilder:toString() #28 - `---[0.084138ms] java.io.PrintStream:println() #28 +Affect(class-cnt:1 , method-cnt:1) cost in 20 ms. +`---ts=2019-12-04 00:45:53;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 + `---[0.549379ms] demo.MathGame:run() + +---[0.059839ms] demo.MathGame:primeFactors() #24 + `---[0.232887ms] demo.MathGame:print() #25 Command execution times exceed limit: 1, so command will exit. You can set it with -n option. ``` -#### 过滤掉jdk的函数 +#### 包含jdk的函数 + +* `--skipJDKMethod ` skip jdk method trace, default value true. + +默认情况下,trace不会包含jdk里的函数调用,如果希望trace jdk里的函数,需要显式设置`--skipJDKMethod false`。 ```bash -$ trace -j demo.MathGame run -Press Ctrl+C to abort. -Affect(class-cnt:1 , method-cnt:1) cost in 31 ms. -`---ts=2018-12-04 01:09:14;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 - `---[5.190646ms] demo.MathGame:run() - +---[4.465779ms] demo.MathGame:primeFactors() - `---[0.375324ms] demo.MathGame:print() +$ trace --skipJDKMethod false demo.MathGame run +Press Q or Ctrl+C to abort. +Affect(class-cnt:1 , method-cnt:1) cost in 60 ms. +`---ts=2019-12-04 00:44:41;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 + `---[1.357742ms] demo.MathGame:run() + +---[0.028624ms] java.util.Random:nextInt() #23 + +---[0.045534ms] demo.MathGame:primeFactors() #24 [throws Exception] + +---[0.005372ms] java.lang.StringBuilder:() #28 + +---[0.012257ms] java.lang.Integer:valueOf() #28 + +---[0.234537ms] java.lang.String:format() #28 + +---[min=0.004539ms,max=0.005778ms,total=0.010317ms,count=2] java.lang.StringBuilder:append() #28 + +---[0.013777ms] java.lang.Exception:getMessage() #28 + +---[0.004935ms] java.lang.StringBuilder:toString() #28 + `---[0.06941ms] java.io.PrintStream:println() #28 + +`---ts=2019-12-04 00:44:42;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 + `---[3.030432ms] demo.MathGame:run() + +---[0.010473ms] java.util.Random:nextInt() #23 + +---[0.023715ms] demo.MathGame:primeFactors() #24 [throws Exception] + +---[0.005198ms] java.lang.StringBuilder:() #28 + +---[0.006405ms] java.lang.Integer:valueOf() #28 + +---[0.178583ms] java.lang.String:format() #28 + +---[min=0.011636ms,max=0.838077ms,total=0.849713ms,count=2] java.lang.StringBuilder:append() #28 + +---[0.008747ms] java.lang.Exception:getMessage() #28 + +---[0.019768ms] java.lang.StringBuilder:toString() #28 + `---[0.076457ms] java.io.PrintStream:println() #28 ``` -* `-j`: jdkMethodSkip, skip jdk method trace - #### 据调用耗时过滤 ```bash