Code Monkey home page Code Monkey logo

housemd's Introduction

Sorry guys, HouseMD may not be updated any more except merging PR.

I highly recommend Grey anatomy If you are looking for a tool like HouseMD.

README moved here.

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

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+ 

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)

关于自定义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也许能知道哪里出错了。

讨论下跟踪系统方法的问题及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 一次只能跟踪一个方法,在解决我上面那一例问题的时候会很不方便。

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

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.