Giter Club home page Giter Club logo

housemd's Introduction

Scala User Group

这儿用于沉淀Scala相关交流的内容, 包括但不限:

议题分享

  • 通过新建一个 分享 issue, 发起待分享的议题, 正文需简要说明分享内容或议程
  • 通过指派明确分享人, 可以是发起人自己, 可以邀请他人来分享
  • 通过评论来对议题进行反馈, 建议, 以或者投票

代码实践

TODO

housemd's People

Contributors

zhongl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

housemd's Issues

ERROR: java.lang.NoClassDefFoundError: com/sun/tools/attach/VirtualMachine

D:\JAVA>java -Xbootclasspath/a:$JAVA_HOME/lib/tools.jar -jar housemd-assembly-0.2.1.jar
ERROR: Missing parameter: pid
Missing parameter: pid

D:\JAVA>java -Xbootclasspath/a:$JAVA_HOME/lib/tools.jar -jar housemd-assembly-0.2.1.jar 2020
ERROR: java.lang.NoClassDefFoundError: com/sun/tools/attach/VirtualMachine
ERROR: You can get more details in /tmp/housemd.err.2020
java.io.FileNotFoundException: \tmp\housemd.err.2020 (系统找不到指定的路径。)

D:\JAVA>java -version
java version "1.6.0_27"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) Client VM (build 20.2-b06, mixed mode, sharing)

Support probe concretes of interface or abstract class

All interface and abstract class can be used to tracing it's concrete.

Unlike tracing normal class, the method filter you input supposed to be (interface or abstract class)simple name with a plus, like InterfaceSimpleName+.

In method filter auto-completion list, all the interfaces and abstract classes will show the simple name with a plus at the end, like this:

housemd> trace TraceTarget
TraceTarget      TraceTarget$A    TraceTarget$B    TraceTarget$C+   TraceTarget$CL   TraceTarget$D+ 

Output this object in detail

| date     | time   | elapse | thread name |this               | method full name  | arguemnt(s) |result or exception
2012-06-07 14:30:57  67ms      [main]      TraceTarget$A@88931 TraceTarget$A.m     [0]           void

讨论下跟踪系统方法的问题及native方法的问题

借宝地再讨论一个问题,我们维护的应用因为某些原因会导致perm区慢慢变大,主要的原因是定义类变多,或调用了 String.intern (在 JDK6 及以前会将 String 在perm区也定义一份),但要查这样的问题不容易,如果是定义类我们可以打开 -verbose:class 或使用 BTrace 跟踪 ClassLoader.defineClass ,但 BTrace 无法跟踪 String.intern ,我猜应该和 internnative 方法有关,所以我使用了一种曲线救国的方式,先通过 ASM 写的一个程序把所有调用 String.intern 的类和方法全部找出来,再对这些方法用 BTrace 跟踪,这样的确能解决这个问题,不知道你有什么想法?
还有个问题我发现 HouseMD 过滤了系统的一些类的跟踪,但 BTrace 可以,而且很实用,不知道这个是出于什么考虑?
再PS一个问题,如在跟踪 String.intern 的问题的时候,我会对怀疑的多个类或方法加 BTrace 跟踪,但我发现 HouseMD 一次只能跟踪一个方法,在解决我上面那一例问题的时候会很不方便。

关于自定义classloader加载的问题

在rt.jar(或classes.jar)中,包含其它的一个JDK系统中的类有很多不是以java, sun 或 com.sun开始的,也有很多org.w3c开始的,和其它的类;我之前在做单元测试框架的时候也使用过自定义的ClassLoader,最后的解决方法是先遍历了一遍JDK自己的jar包加载到内存,通过hashset判断才解决这个问题,不过这个方法比较耗内存。

但下面判断方法有点欠妥:

if (name.startsWith("java") || name.startsWith("sun") || name.startsWith("com.sun"))

https://github.com/zhongl/HouseMD/blob/master/src/main/scala/com/github/zhongl/housemd/Duck.java

支持debug或verbose模式

trace某个方法的时候,当该方法执行时,housemd就直接退出了,没有任何日志或异常信息。
不知道哪里出了问题,trace其他方法都正常,就是有一个方法每次都这样。
如果有debug或verbose也许能知道哪里出错了。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.