Restore Debug Info functionality is accessible from the Tools menu and from the command line (command line support is described at the end). The main idea behind this feature is to enable bytecode-level debugging of any .class file in any source-level Java debugger (e.g. JSwat, jdb). Restoring debug information consist of two stages:
;------------------------------------------------------------------------------- ; File generated by dirtyJOE v1.6 (c466) (x86) ; Copyright © 2008-2013 ReWolf ; http://dirty-joe.com ; joe@dirty-joe.com ;------------------------------------------------------------------------------- java.lang.Object getObjectLock() 00000000: aload_0 00000001: getfield java.lang.Object java.awt.Component.objectLock 00000004: areturn ;------------------------------------------------------------------------------- int getBoundsOp() 00000000: getstatic boolean java.awt.Component.$assertionsDisabled 00000003: ifne pos.00000018 00000006: aload_0Restoring local variables is experimental feature and it might not work as supposed. Currently it tries to assign proper type (int, long, float, double, object reference) and scope to every local variable referenced in the bytecode. For object references it will always assign java.lang.Object type, as it doesn't perform any deep analysis of the function. Scope of the variable is based on the simple analysis of control flow instructions and exception handlers. Command line supportRestore Debug Info feature is also available directly from the command line:dirtyJOE should be started through "start /WAIT" command, as it is not console application thus it will run asynchronously without this command: start /WAIT dirtyJOE.exe /rdi class_file.classCommand line support was introduced to help with restoring debug info in multiple files. Below command will restore debug information for all files in the current directory and all subdirectories (.joe files will be placed in the same subdirectories as input .class files): for /R %c in (*.class) do start /WAIT dirtyJOE.exe /rdi "%c"
|