-
Notifications
You must be signed in to change notification settings - Fork 218
FAQCN
指Class.getName()
结果中除去包名的部分, 例如java.lang.String
的SimpleName
是String
.
执行 loaded SimpleName
的结果中 ->
右侧的路径就是此类加载的来源.
支持, 键入你期望提示的SimpleName
的首字母, 再键入Tab
则会罗列全部SimpleName
的候选列表.
若列表过长则会显示列表的总数, 并询问你是否要查看, 键入y
查看, 键入n
取消.
若列表只有一个时, SimpleName
会自动补全.
执行 loaded -h SimpleName
的结果中, 从第二行显示的是第一行类的类加载器, 第二行之后的每一行显示的是上一行的父类加载器.
假定一段时间是30
秒, 从开始时间起, 执行 trace -t 30 SimpleName.methodName
的结果实时摘要中, 每行的第三列数字表明了调用的次数.
若不指定
-t
, 则默认为10秒;
默认情况下, 每行显示的间隔时间为
1
秒钟;
其余列的含义, 请见使用指南.
更多选项, 请执行
help trace
假定要指定的间隔时间为3
秒, 执行 trace -i 3 SimpleName.methodName
, 则实时摘要会每隔3
秒显示一行最新的信息.
更多选项, 请执行
help trace
.
trace
在设计上为了尽可能减少对正在运行的java
进程影响, 设定了-t
和-l
两个选项来限制一次trace
的周期. 出现上述情况, 是因为-l
的默认值1000
的条件已经达成, 导致trace
过程自动结束. 若一定要trace
足够长的时间, 请调整一个合适-l
选项的值.
强烈建议
trace
的周期越短越好;
更多选项, 请执行
help trace
.
假定要过滤以com.example
开头的包名, 则执行 trace -p com\.example.* SimpleName.methodName
, 其结果会将只会显示以com.example
开头包名下的SimpleName
的方法调用信息.
-p
的值为正则表达式;
更多选项, 请执行
help trace
.
执行trace
命令时, 增加-d
选项, 如trace -d SimpleName.methodName
. 之后更详细的信息会输出到一个文件(这文件的路径请通过执行help trace
, 查看-d
选项的说明中获知), 其中每行各列的含义说明请见使用指南
执行trace
命令时, 增加-s
选项, 如trace -s SimpleName.methodName
. 之后方法调用栈的信息会输出到一个文件(这文件的路径请通过执行help trace
, 查看-s
选项的说明中获知)
执行trace
是仅键入SimpleName
就可以了, 如trace Simplename
.
支持, 和loaded
命令一样.
支持, 在键入SimpleName.
之后, 键入Tab
会提示所有此类声明的方法(包括public/protected/default/private可见的方法, 但v0.2.1后不含继承下来的方法)
trace
不支持模糊SimpleName
的匹配, 相信知道SimpleName
不是一件难事:)
v0.2.1后可以, 假定你要trace
Runnable
, 则执行trace Runnable+.run
, 则所有 直接 实现Runnable
接口的实现类的run方法都将被trace
.
注意, 间接实现不包含在内, 如
C -> B -> A
, 要通过A
来trace
的话,C
不会包含在内;
SimpleName
的自动提示列表中, 为接口的SimpleName
末尾都有一个+
标识.
v0.2.1后可以, 和接口一样, 执行trace SimpleName+.methodName
.
注意, 若指定方法不是抽象的(
abstract
), 则此方法会被trace
, 当其直接子类也覆写(override
)此方法, 覆写的方法也将被trace
呃, 在trace
命令中无法区分, 但在实时现实的结果中会现实方法的参数列表, 这里是可以区分的.
访问权限受限导致无法attach
目标进程, 请使用启动目标进程的账户再次尝试.
即使用户不变,在VirtualBox的共享目录下执行houseMD依然出现同样问题,请把houseMD和目标程序迁移到非共享目录再次尝试.
网络问题导致jar
下载得不完整, 请尝试重新下载.
在 Windows下, 使用SecureCRT是请确保终端类型是Linux, 即菜单Options -> Session Options -> Terminal -> Emulation -> Terminal 的选项是Linux.