HouseMD is a interactive command-line tool for dianosing Java process in runtime. It's inspiration came from BTrace, but more easier to use and more safer.
- Display loaded classes information
- source file(.class or .jar)
- Display invocation trace summary
- method full name and sign
- class loader of method declaring class
- total invoked times
- avg elapse millis
- self instance
- Output invocation detail
- elapse millis
- call thread
- this object
- class name
- method name
- result or exception
- Output invocation stack trace
- Display object field value
- Display enviroment variable
- Auto-completion by typing
- navigate command history by up and down, and support
Ctrl + Rfor searching
- Awesome features you can provide by forking me
Test cases would show more specification details.
- JDK 6
Install from jenv
- install jenv
- execute command line:
$ jenv install housemd
Caution: Windows are not supported yet.
> housemd -h
A help infomation shows up like:
Usage: housemd [OPTIONS] pid a runtime diagnosis tool of JVM. Options: -h, --help show help infomation of this command. -p, --port=[INT] set console local socket server port number. default: 54321 Parameters: pid id of process to be diagnosing.
Suppost your target pid is
1234 (you can use
ps get it), and then input:
> ./housemd 1234
After seen prompt
help then you get help infomation like this:
housemd> help quit terminate the process. help display this infomation. trace display or output infomation of method invocaton. loaded display loaded classes information. env display system env. inspect display fields of a class.
You can also input
help loaded and get help infomation of
loaded as blow:
housemd> help loaded Usage: loaded [OPTIONS] name display loaded classes information. Options: -h, --classloader-hierarchies display classloader hierarchies of loaded class. Parameters: name class name without package name.
Click here to see the use cases.
$ git clone https://github.com/zhongl/HouseMD.git housemd $ cd housemd $ sbt proguard
A runnable jar named
housemd_x.x.x-x.x.x.min.jar should be generated blow
$ java -Xbootclasspath/a:$JAVA_HOME/lib/tools.jar -jar housemd_x.x.x-x.x.x.min.jar [OPTIONS] <pid>
Caution: In Mac OSX, the
-Xbootclasspathis no needed. You can created launch script as a shortcut.