Provides a way to debug classes, using the ASM framework to dynamically modify classes upon loading.

Currently two facilities for debugging are available - the printing of all class members recursively, and the ability to limit the depth of recurisve methods.

The easiest way to start using this is to simply run {@link com.futureshocked.classloader.ApplicationDebugger} with the the appropriate arguments (make sure to include the full name, with package, of all classes). For example:
java com.futureshocked.classloader.ApplicationDebugger ClassWithMainMethod "void com.user.package.ClassYouWishToDebug.methodToDebug(java.lang.String arg1, int arg2)" (any arguments for main method)

For more control, make a new ApplicationDebugger instance and call the appropriate methods:

ApplicationDebugger ad = new ApplicationDebugger(String classWithMainMethod, String[] argsForMainMethod);
ad.setVerbose(true);           // print debugging information

InterceptedMethod im = ad.addCodeStyleMethod(
    "java.lang.String com.my.package.TestClass.testMethod(int arg1)", 
    true, true);
im.setRecursionLimiter(30);    // max recursive depth of 30
im.removeStaticDebuggerCall(); // instead, could have used false for first boolean above

ad.run();