FerbJmon Tools can be used to monitor and visualize the accesses of threads on Java objects. The monitoring is injected into user code via bytecode instrumentation using a Java Agent. FerbJmon Tools can create timeline diagrams and callgraphs from Java programs. Its main purpose is the visualization of concurrent behavior in real programs. FerbJmon Tools are especially useful for teaching parallel and distributed programming in Java.
Currently FerbJmon Tools consist of two separate tools:
java_callgraph
java_threadorder
The wrapper scripts provided can be used as replacements for the java
command line program. Instead of
java -cp <Classpath> package.Main
use
java_threadorder -cp <Classpath> package.Main
.
The FerbJmon Tool java_threadorder
uses a modified java.lang.Thread
class, which is Java version dependent. Once compiled, the tools will only work with the Java version they were compiled with, e.g., Java 7. For a different Java version, the tools just need to be rebuilt with the corresponding compiler.
- for building the following packages are required: java-jdk, ant, zip, unzip, git ;-)
- clone FerbJmon into a local folder (
git clone https://github.com/marvinferber/ferbjmon.git
) - cd to the newly created git repo of FerbJmon (
cd ferbjmon
) - get the dependencies using the script provided (
./get_dependencies.sh
) - build the FerbJmon Tools using the script provided (
./make_dist.sh
) - on successful completion everything needed will be located in the
dist
folder and can be invoked from any directory
TODO
FerbJmon Tools are built on the open source software products named below: