CSUG / HouseMD

HouseMD is an awesome diagnosing tool better than BTrace
http://csug.github.io/HouseMD/
Apache License 2.0
700 stars 218 forks source link

loaded命令是否可以支持模糊查询 #39

Closed killme2008 closed 12 years ago

killme2008 commented 12 years ago

例如支持通配符:

loaded com.taobao.*Test

可以通过字符串的相似度计算或者转化为正则匹配来支持

zhongl commented 12 years ago

支持倒是不难.

最初设计loadedtrace的时候本来打算就是用正则的, 但考虑到写正则的原因是不清楚具体的类名, 所以用自动提示补全的机制来解决更为合适. 若不然, 匹配的目标过多, 看不过来, 还是要再次反复写正则, 比较麻烦.

我想知道你希望用正则真正去解决什么问题, 或着初衷是什么?

killme2008 commented 12 years ago

初衷就是不知道类名,甚至我连package name可能都不知道,第一个字符敲不下去,也没办法代码提示。当然,其实我是可以通过jmap查找的,jmap+grep可以解决问题,但是如果能直接支持当然是更好。

zhongl commented 12 years ago

呵呵, 必须要敲第一个字符的"龌蹉"设定, 我斟酌了很久, 主要是考虑到一开始就Tab, 全部加载的类有好几千, 看不过来一样是白搭.

Java的场景下这个问题影响应该不大, 调试诊断一般都会知道从哪些类入手, 至少第一个字符肯定知道是没有问题的.

Clojure的场景下, 就不好办了, 因为编译器的特定处理, 类名不定是个什么样子, 我想 #41 里 James 估计和你面临了同样的纠结.

我仍然觉得支持正则的方式不是最优解决办法, 可以定制一个cj-loaded命令, 它支持Clojure的函数名自动补全之类的特性, 甚至加上namespace的支持, 这样应该能更好的解决你的问题.

静候我的开发指南文档出来吧, 到时候你就可以自己定制自己顺手的命令了 , 怎么样 !? :)

killme2008 commented 12 years ago

嗯,如果支持插件,那就不需要了。